| 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: 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.
|
|\ \
| |/
|/|
| | |
doc: man: Update fccntl manpage
|
|/
|
|
|
| |
The option to mark a flow as down was missing from the manpage of
fccntl.
|
|\
| |
| |
| | |
ipcpd, lib: Add flow down events
|
|/
|
|
|
|
|
|
| |
This adds the flow down event to Ouroboros. In the shim-eth-llc, a
netlink socket is opened which listens to device up/down events. For
each event the flow is then adjusted with fccntl to notify the user
the flow is down or back up again. In the normal IPCP an event is
thrown if a write reports that the flow is down.
|