| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
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 fixes an invalid access to an object that was already freed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes a number of issues in CDAP.
CDAP keeps track if a message is being processed, and moves it to the
end of the request list if it is. It will now correctly wait for new
messages.
The invoke_ids are generated locally per CDAP instance, invoke_ids
can't be used to track incoming requests, we need to keep track of the
fd. The keys are now identifiers (taken from the same local pool as the
invoke_ids) that are used to track requests.
|
|
|
|
|
| |
When something fails, the successfully sent CDAP messages should be
reported back. Invoke_ids were not correctly released.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
You can now add multiple flows to a CDAP instance. This will simplify
sending messages to different peers (e.g. for syncing the RIB). A
request will now return an array of keys terminated by
CDAP_KEY_INVALID. Removes the enum from the CDAP proto file to just
take the opcode as an integer.
|
|
|
|
|
|
|
| |
Our mailserver was migrated from intec.ugent.be to the central
ugent.be emailserver. This PR updates the header files to reflect this
change as well. Some header files were also homogenized if the
parameters within the functions were badly aligned.
|
|
|
|
| |
This facilitates sending arbitrary variables over CDAP.
|
|
|
|
|
| |
Copyright is set to 2016 - 2017. License text on includes and sources
in the library are changed to indicate the LGPLv2.1 license.
|
|
|
|
| |
Adds LGPL license to the ouroboros lists.
|
|
|
|
|
| |
Fixes a memleak of cdap_req structs and correcly releases invoke_ids
if the cdap_request_send operation fails during its execution.
|
|
|
|
|
| |
This corrects the license statements on all files. Installed headers
are LGPLv2.1, the rest of the code is GPLv2.
|
|
|
|
|
| |
Refactors the normal IPCP fmgr and ribmgr, and modifies the API for
cdap so that no callbacks are needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Receiver timeouts can now be set on a flow using the flow_set_timeout
function. Specifying NULL disables the timeout. The flow_get_timeout
function gets the value for the timeout.
This commit also deprecates fcntl in favor of flow_get_flags and
flow_set_flags functions.
struct qos_spec is typedef'd as a qosspec_t.
The tools and cdap.c are updated to use the new API.
Fixes a bug in operf client where the client's writer thread wouldn't
cancel on SIGINT.
|
|
|
|
|
|
| |
This will simplify the CDAP API. Now the opcode has to be given when
sending a CDAP request. Before a separate operation was provided since
some of the function parameters are unused for certain commands.
|
|
|
|
|
| |
This has the code checked with -Wcast-qual and -Wconversion flags.
These flags were removed because SWIG generated code fails.
|
|
|
|
|
|
|
|
|
|
|
|
| |
IPCPs can now use ap_init() to initialize the memory. All flows are
accessed using flow descriptors, this greatly simplifies IPCP
development. Reverts the fast path to a single ap_rbuff per process.
Splits lib/ipcp into irmd/ipcp and lib/ipcp-dev. Adds a lib/shim-dev
holding tailored functions for shims. Moves the buffer_t to utils.h.
Fixes the shim-eth-llc length field. Removes the flow from shared.h.
Fixes #4
Fixes #5
|
|
|
|
| |
When getting a DELETE opcode, create was called instead of delete.
|
|
|
|
|
| |
Destroying NULL should succeed. Resources need to be freed even if
flow_dealloc fails.
|
|
|
|
|
|
|
|
| |
This adds a condition variable with a timeout to the CDAP request so
that we can respond correctly to the answer from the remote. It also
adds a timeout to the condition variable waiting on completion of
enrollment. Furthermore, for every CDAP callback a new thread is now
spawned, to avoid deadlocking in case a callback is stuck.
|
|
|
|
|
|
| |
This adds the functionality of exchanging the static DIF information
between 2 DIF members. After exchange the enrollment is stopped, and
the IPCP that initiated enrollment transitions to the enrolled state.
|
|
|
|
|
| |
Sometimes the POSIX version was not set in source files. This caused
the compiler to not find the timespec struct, since we are using C89.
|
|
|
|
|
|
|
| |
This will add more functionality for enrolling two normal IPCPs with
each other. Some bugs were fixed in CDAP. Now on enrolling, an IPCP
will send a START message to the other IPCP. Next step is syncing the
RIBs.
|
|
|
|
|
|
| |
This provides the normal IPCP with bootstrapping and the initial steps
for enrollment. Next step is actually reacting to an enrollment
request and sending the data transfer constants.
|
|
|
|
|
|
| |
This commit fixes some errors reported during compilation that were
undiscovered by my gcc compiler but found by clang, and errors not
found on my system but found by the CI platform.
|
|
|
|
|
|
|
|
| |
This commit introduces a first version of the revised CDAP
specification. CACEP (for authentication purposes) has been separated
from CDAP. Application developers may use CDAP if they find it
useful. Within Ouroboros CDAP will be used to perform operations on
the RIB of an IPCP.
|
|
Contains the initial build infrastructure. Cmake was chosen for
portability reasons.
|