| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
This adds a virtual RIB that is accessible as a filesystem that is
accessed through a fuse mountpoint (configurable , default is
/tmp/ouroboros). Currently, each IPCP will export its link state
database.
|
|
|
|
|
| |
This adds a reordering queue to FRCT so that SDUs can be delivered
in-order when requested.
|
|
|
|
|
|
| |
This fixes output when detecting DDNS tools and homogenizes output and
the APIs used to pass variables between the build system and the
sources. Fixes some minor issues and typos).
|
|
|
|
|
|
|
|
| |
This removes the RIB as a datastructure and CDAP as the protocol
between IPCPs. CDAP, the rib and related sources are deprecated. The
link-state protocol policy is udpated to use its own protocol based on
a simple broadcast strategy along a tree. The neighbors struct is
deprecated and moved to the library as a generic notifier component.
|
|
|
|
| |
This adds a systemd unit for the irmd on installation of Ouroboros.
|
|
|
|
|
| |
This adds a per instance FRCT lock, since it was taking a write lock,
thereby severely impacting parallelism in dev.c
|
|
|
|
|
|
|
| |
This replaces the flow_set_* commands with a single fccntl command
that can configure flows and the FRCT instance.
For more details, see "man 3 fccntl".
|
|
|
|
|
| |
This will delete the rdrbuff also when it has been corrupted
before. Otherwise the irmd won't start, as experienced on my desktop.
|
|\
| |
| |
| | |
lib, ipcpd: Fix e-mail addresses in protobuf files
|
| |
| |
| |
| | |
This fixes the wrong e-mail addresses in the protobuf files.
|
|/ |
|
|
|
|
| |
This fixes several bugs as reported by the clang static analyzer.
|
|\
| |
| |
| | |
Be deprecate gam
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This enables user-written tools to instruct IPCPs to establish and
tear down connections (a.k.a. adjacencies) between its internal
components (Management and Data Transfer).
For more info, do "irm ipcp connect" or "irm ipcp disconnect" on the
command line.
This commit exposes a deletion bug in the RIB where FSO's fail to
unpack/parse. This will be fixed when the RIB is deprecated.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The graph adjacency manager has been deprecated in favor of providing
an external interface into the connectivity manager so that
adjacencies can be controlled from the command line, user scripts or
user applications.
The gam and its associated policies were removed from the normal IPCP
and the IRM configuration tools. The "/members" part of the RIB was
deprecated. Removal of the gam means that initial connectivity based
on changes in the RIB can't be provided, so some changes were
required throughout the normal IPCP.
The enrollment procedure was revised to establish its own
connectivity. First, it gets boot information from a peer by
establishing a connection to the remote enrollment component and
downloading the IPCP configuratoin. This is now done using its own
protocol buffers message in anticipation of deprecation of the RIB and
CDAP for communication within a DIF.
After the boot information is downloaded, it establishes a data
transfer flow for enrolling the directory (DHT). After the DHT has
enrolled, it signals the peer to that enrollment is done, and the data
transfer connection is torn down.
Signaling connections is done via the nbs struct, which is now passed
to the connmgr, which enables control of the connectivity graph from
external sources.
|
|/
|
|
|
| |
This adds the configuration message to FRCT, which allows for
configuring the connection.
|
|
|
|
| |
A read lock was taken when a write lock was needed.
|
|
|
|
|
| |
This fixes several memleaks as reported by valgrind. It also fixes
some calls to close() with -1.
|
|
|
|
|
|
| |
This makes the sender and receiver inactivity timers into simple
checks that compare when the last SDU was sent to the current time to
set the receiver or sender inactivity.
|
|
|
|
|
| |
Timeout was asserted not to be NULL, but sometimes timeout can be NULL
and is a valid parameter when NULL.
|
|
|
|
|
| |
shm_flow_set_wait was called with a timeout even though
flow_event_wait was called with timeout NULL.
|
|
|
|
| |
frct_clear was called in ouroboros_fini instead of ouroboros_init.
|
|
|
|
|
|
| |
This adds the CRC check by default on outgoing SDUs. It fixes some
errors in the serialization and deserialization of the SDU. frct_clear
was added to avoid bad initialization of the array of FRCT instances.
|
|\
| |
| |
| | |
Be tw
|
| |
| |
| |
| |
| |
| | |
This turns the timerwheel into a passive component since it is used by
application using the library. The user of the timerwheel now has to
call timerwheel_move to advance the timerwheel.
|
| |
| |
| |
| |
| | |
There was an else clause matched with the wrong if statement,
resulting in robust mutexes being enabled even in glibc 2.25.
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
This revises the build system to have configuration per system
component. System settings can now be set using cmake.
The standard compliance defines were removed from configuration header
and are set in the sources where needed. Also some small code
refactors, such as moving the data for shims out of the ipcp structure
to the respective shims were performed.
|
|
|
|
|
|
|
|
|
|
| |
This adds the basic FRCT mechanisms to the library. Upon flow alloc or
accept an FRCT instance is now created and used when reading or
writing to the flow. The timerwheel has been refactored to allow
recharging timers and removing them and is now part of the
library. The first SDU sent over the connection has the DRF set and
this initializes the connection. Sender and receiver inactivity timers
are added.
|
|
|
|
| |
The build failed on OS X if an old version of libgrypt is installed.
|
| |
|
|
|
|
|
|
| |
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 instability in threadpool manager
|
| |
| |
| |
| |
| |
| | |
The threadpool manager now tracks threads to prevent cyclic behaviour
where too many threads shut down and the TPM responds with creating
additional threads.
|
|/ |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This refactors dev.c to have a common function called init_flow that
is called whenever a flow is allocated in dev.c
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
This will hardcode the shim hash algorithms as they don't have an
enrollment phase.
Fixes #44
|
| |
|
| |
|