summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* ipcpd: normal: Add Loop-Free Alternates routingSander Vrijders2017-09-298-56/+229
| | | | | | This adds the Loop-Free Alternates (LFA) policy. In case a link goes down a LFA may be selected to route the SDUs on without causing loops instead of the main hop that just went down.
* Merged in sandervrijders/ouroboros/be-routing (pull request #617)Sander Vrijders2017-09-264-189/+288
|\ | | | | | | Be routing
| * ipcpd: normal: Add refcount to graph edgesSander Vrijders2017-09-263-22/+53
| | | | | | | | | | This adds a refcount to the graph edges so that it is only included in the calculation if both sides announced it.
| * ipcpd: normal: Keep index in vertex structSander Vrijders2017-09-252-27/+24
| | | | | | | | | | This keeps the index in the vertex struct so that is more easily available during Dijkstra.
| * ipcpd: normal: Simplify Dijkstra implementationSander Vrijders2017-09-251-25/+17
| | | | | | | | | | | | This simplifies the Dijkstra implementation by immediately setting the correct next hop during Dijkstra instead of looping through the list of predecessors afterwards.
| * ipcpd: normal: Simplify internal graph functionsSander Vrijders2017-09-251-38/+26
| | | | | | | | | | This simplifies several internal graph functions by passing an array of bools instead of an array of vertices.
| * ipcpd: normal: Return list as routing tableSander Vrijders2017-09-254-106/+197
| | | | | | | | | | | | This returns a list as routing table instead of a pointer to a pointer to a pointer, which simplifies the looping through the routing table and makes it more extensible for future additions.
* | Merged in sandervrijders/ouroboros/be-dht-fix (pull request #618)Sander Vrijders2017-09-261-3/+3
|\ \ | | | | | | | | | ipcpd: normal: Set clock to realtime clock
| * | ipcpd: normal: Set clock to realtime clockSander Vrijders2017-09-261-3/+3
| |/ | | | | | | | | | | A pthread_cond_wait was using the pthread_cond_clock and thereby timing out constantly, consuming 100% CPU. This changes it to use the realtime clock.
* | Merged in dstaesse/ouroboros/be-sched-mul (pull request #619)dimitri staessens2017-09-263-10/+14
|\ \ | |/ |/| | | ipcpd: Add multiplier to scale scheduler threads
| * ipcpd: Add multiplier to scale scheduler threadsdimitri staessens2017-09-253-10/+14
|/
* Merged in dstaesse/ouroboros/be-dht-deadlock-fix (pull request #616)dimitri staessens2017-09-241-27/+41
|\ | | | | | | ipcpd: Fix deadlock in DHT
| * ipcpd: Fix deadlock in DHTdimitri staessens2017-09-241-27/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | The lookup_update was waiting for the LU_INIT state to resolve under dht->lock which prevented that update. This PR fixes this bug, but leaves a (very rare) bug when the lookup_destroy is called while the lookup_update is waiting for the LU_INIT state to resolve. The solution also is a (harmless) lock inversion, but this is also not the best. Fixes #51 Fixes #52
* | Merged in dstaesse/ouroboros/be-dht-debugging (pull request #615)dimitri staessens2017-09-246-319/+417
|\| | | | | | | ipcpd: Fix compilation of DHT
| * ipcpd: Add threadpool manager to DHTdimitri staessens2017-09-246-319/+417
|/ | | | | | | | | | | This adds a threadpool manager to the DHT. This was needed because the detached thread could cause a data race on shutdown. The threadpool manager is revised to allow multiple instances in a single program. The irmd and ipcp now store commands in a buffer (list) instead of a single buffer before passing it to handler threads.
* Merged in dstaesse/ouroboros/be-bugfixes (pull request #614)dimitri staessens2017-09-233-81/+129
|\ | | | | | | Some bugfixes
| * ipcpd: Don't publish DHT entries under lockdimitri staessens2017-09-231-30/+85
| |
| * lib: Clean up bitmap implementationdimitri staessens2017-09-232-51/+44
| | | | | | | | | | | | There was a return -1 in the allocate call which is unsafe since -1 may be a valid id in the bitmap. Since it's a data structure for internal use, I replaced the NULL checks with assertions.
* | Merged in dstaesse/ouroboros/be-bugfixes (pull request #613)dimitri staessens2017-09-232-9/+17
|\| | | | | | | Some bugfixes
| * ipcpd: Lock dht before reading parametersdimitri staessens2017-09-231-7/+14
| |
| * ipcpd: Fix data race in shim-udpdimitri staessens2017-09-231-2/+3
| | | | | | | | | | This fixes a data race in the shim-udp where the alloc_lock was released before the ipcpi.alloc_id was set.
* | Merged in sandervrijders/ouroboros/be-lockless (pull request #612)Sander Vrijders2017-09-221-2/+2
|\ \ | | | | | | | | | lib: Disable lockless rbuff by default
| * | lib: Disable lockless rbuff by defaultSander Vrijders2017-09-221-2/+2
|/ / | | | | | | | | This disables the lockless rbuff by default since it is less stable and tested.
* | Merged in dstaesse/ouroboros/be-dht-update-fix (pull request #611)dimitri staessens2017-09-221-1/+4
|\ \ | |/ |/| | | ipcpd: Fix DHT recursive lookup
| * ipcpd: Fix DHT recursive lookupdimitri staessens2017-09-221-1/+4
|/
* Merged in dstaesse/ouroboros/be-hashtable (pull request #610)dimitri staessens2017-09-212-0/+5
|\ | | | | | | lib: Include string.h in hashtable.c for memcpy
| * ipcpd: Mark len parameter as unused in simple_pffdimitri staessens2017-09-211-0/+4
| |
| * lib: Include string.h in hashtable.c for memcpydimitri staessens2017-09-211-0/+1
|/
* Merged in dstaesse/ouroboros/be-cancel (pull request #609)dimitri staessens2017-09-213-72/+85
|\ | | | | | | ipcpd: Cancel threads in IPCPs
| * ipcpd: Cancel threads in IPCPsdimitri staessens2017-09-213-72/+85
| | | | | | | | | | | | This reduces CPU consumption and shutdown times. Invalidates #43
* | Merged in sandervrijders/ouroboros/be-lfa-pff (pull request #607)Sander Vrijders2017-09-2112-77/+579
|\ \ | |/ |/| | | ipcpd: normal: Add alternate hop PFF
| * ipcpd: normal: Add alternate hop PFFSander Vrijders2017-09-2112-77/+579
| | | | | | | | | | This adds a PFF that returns an alternate hop as next hop in case the hop that would have been returned is down.
* | Merged in dstaesse/ouroboros/be-sched (pull request #608)dimitri staessens2017-09-213-61/+106
|\ \ | |/ |/| | | ipcpd: Use the kernel scheduler for QoS
| * ipcpd: Use the kernel scheduler for QoSdimitri staessens2017-09-213-61/+106
|/ | | | | | | | | This revises the sdu_scheduler of the normal IPCP to create a scheduler thread per QoS cube and let the kernel scheduler schedule them based on a priority. Priorities can be set at build time in a range of 0-100, which will be mapped onto a suitable priority for the kernel scheduler. The current scheduler policy is fixed to SCHED_RR since it is the most suitable scheduler defined by POSIX.
* Merged in dstaesse/ouroboros/be-rib (pull request #606)dimitri staessens2017-09-212-5/+3
|\ | | | | | | lib: Pass the fuse struct to the handling thread
| * lib: Pass the fuse struct to the handling threaddimitri staessens2017-09-212-5/+3
|/ | | | This avoids potential data races on rib.fuse.
* Merged in dstaesse/ouroboros/be-dht-revision (pull request #605)dimitri staessens2017-09-211-15/+58
|\ | | | | | | ipcpd: Handle DHT SDUs in different thread
| * ipcpd: Handle DHT SDUs in different threaddimitri staessens2017-09-201-15/+58
| | | | | | | | | | | | | | The DHT will now spawn a thread when receiving SDUs to avoid starvation of sdu scheduler threads. Also fixes some locking issues.
* | Merged in sandervrijders/ouroboros/be-pff (pull request #604)Sander Vrijders2017-09-2019-140/+422
|\ \ | | | | | | | | | ipcpd: normal: Make PFF policy-based
| * | ipcpd: normal: Make PFF policy-basedSander Vrijders2017-09-2019-140/+422
| | | | | | | | | | | | | | | This turns the PDU Forwarding Function of the IPCP into a policy. For now only the simple PFF policy is available.
* | | Merged in dstaesse/ouroboros/be-fuse-fix (pull request #603)dimitri staessens2017-09-201-0/+3
|\ \ \ | |/ / |/| / | |/ ipcpd: Fix shutdown of rib
| * ipcpd: Fix shutdown of ribdimitri staessens2017-09-201-0/+3
| | | | | | | | Fixes #50
* | Merged in dstaesse/ouroboros/be-gcrypt-init (pull request #602)dimitri staessens2017-09-204-3/+20
|\| | | | | | | irmd: Init libgcrypt before using it
| * irmd: Init libgcrypt before using itdimitri staessens2017-09-204-3/+20
|/
* Merged in dstaesse/ouroboros/be-dht-query-refuse (pull request #601)dimitri staessens2017-09-191-0/+3
|\ | | | | | | ipcpd: Refuse query when DHT not in running state
| * ipcpd: Refuse query when DHT not in running statedimitri staessens2017-09-191-0/+3
| |
* | Merged in dstaesse/ouroboros/be-fuse-msg (pull request #600)dimitri staessens2017-09-191-0/+2
|\ \ | | | | | | | | | build: Notify if FUSE is not installed
| * | build: Notify if FUSE is not installeddimitri staessens2017-09-191-0/+2
| |/
* | Merged in dstaesse/ouroboros/be-dht-contacts (pull request #599)dimitri staessens2017-09-191-3/+3
|\ \ | |/ |/| | | ipcpd: Fix contact list in DHT
| * ipcpd: Fix contact list in DHTdimitri staessens2017-09-191-3/+3
|/