| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| | |
This adds a refcount to the graph edges so that it is only included in
the calculation if both sides announced it.
|
| |
| |
| |
| |
| | |
This keeps the index in the vertex struct so that is more easily
available during Dijkstra.
|
| |
| |
| |
| |
| |
| | |
This simplifies the Dijkstra implementation by immediately setting the
correct next hop during Dijkstra instead of looping through the list
of predecessors afterwards.
|
| |
| |
| |
| |
| | |
This simplifies several internal graph functions by passing an array
of bools instead of an array of vertices.
|
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | |
| | | |
ipcpd: normal: Set clock to realtime clock
|
| |/
| |
| |
| |
| |
| | |
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.
|
|\ \
| |/
|/|
| | |
ipcpd: Add multiplier to scale scheduler threads
|
|/ |
|
|\
| |
| |
| | |
ipcpd: Fix deadlock in DHT
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\|
| |
| |
| | |
ipcpd: Fix compilation of DHT
|
|/
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
Some bugfixes
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
|\|
| |
| |
| | |
Some bugfixes
|
| | |
|
| |
| |
| |
| |
| | |
This fixes a data race in the shim-udp where the alloc_lock was
released before the ipcpi.alloc_id was set.
|
|\ \
| | |
| | |
| | | |
lib: Disable lockless rbuff by default
|
|/ /
| |
| |
| |
| | |
This disables the lockless rbuff by default since it is less stable
and tested.
|
|\ \
| |/
|/|
| | |
ipcpd: Fix DHT recursive lookup
|
|/ |
|
|\
| |
| |
| | |
lib: Include string.h in hashtable.c for memcpy
|
| | |
|
|/ |
|
|\
| |
| |
| | |
ipcpd: Cancel threads in IPCPs
|
| |
| |
| |
| |
| |
| | |
This reduces CPU consumption and shutdown times.
Invalidates #43
|
|\ \
| |/
|/|
| | |
ipcpd: normal: Add alternate hop PFF
|
| |
| |
| |
| |
| | |
This adds a PFF that returns an alternate hop as next hop in case the
hop that would have been returned is down.
|
|\ \
| |/
|/|
| | |
ipcpd: Use the kernel scheduler for QoS
|
|/
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
lib: Pass the fuse struct to the handling thread
|
|/
|
|
| |
This avoids potential data races on rib.fuse.
|
|\
| |
| |
| | |
ipcpd: Handle DHT SDUs in different thread
|
| |
| |
| |
| |
| |
| |
| | |
The DHT will now spawn a thread when receiving SDUs to avoid
starvation of sdu scheduler threads.
Also fixes some locking issues.
|
|\ \
| | |
| | |
| | | |
ipcpd: normal: Make PFF policy-based
|
| | |
| | |
| | |
| | |
| | | |
This turns the PDU Forwarding Function of the IPCP into a policy. For
now only the simple PFF policy is available.
|
|\ \ \
| |/ /
|/| /
| |/ |
ipcpd: Fix shutdown of rib
|
| |
| |
| |
| | |
Fixes #50
|
|\|
| |
| |
| | |
irmd: Init libgcrypt before using it
|
|/ |
|
|\
| |
| |
| | |
ipcpd: Refuse query when DHT not in running state
|
| | |
|
|\ \
| | |
| | |
| | | |
build: Notify if FUSE is not installed
|
| |/ |
|
|\ \
| |/
|/|
| | |
ipcpd: Fix contact list in DHT
|
|/ |
|
|\
| |
| |
| | |
ipcpd: Enroll DHT when creating dt connection
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The DHT will now enroll or sync when a data transfer connection is
added. This avoids the need to create a temporary data transfer
connection during enrollment (and speeds it up considerably).
The notifier system was modified to take an opaque pointer to the
object that registers as a parameter.
|