| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
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".
|
| |
|
|\
| |
| |
| | |
Be deprecate gam
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
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 more Quality of Service support to Ouroboros. One part is
the network specific characteristics such as bandwidth, delay, ...
The other part is end-to-end QoS like reliability, window based flow
control, ...
|
|
|
|
|
| |
The dev.c source file had some missing include headers. This PR fixes
inconsistencies between the definitions and declarations in ipcp-dev.h
|
|
|
|
|
|
|
| |
Fixed releasing an allocated fd on failure. As the sending of dealloc
messages has been deprecated, dealloc was simplified by removing a
stale block of code (replaced with an assertion). Fixed reading some
variables without a necessary lock.
|
|
|
|
|
|
|
| |
In order to ensure 100% reliable transfer, the protocol state machine
that takes care of retransmission and SDU ordering has to be in the
application. Flow allocation in the normal now uses fds. The PDU_type
field was deprecated and AE's within the DIF can use reserved fds.
|
| |
|
|
|
|
|
|
|
| |
This adds a call ipcp_sdb_reserve to reserve memory in the rdrbuff
without directly writing to a flow. The ipcp_flow_del function was
renamed to ipcp_sdb_release. The functions operating on sdbs are moved
to their own header.
|
|
|
|
| |
Fixes #35
|
|\
| |
| |
| | |
lib, ipcpd, irmd: Register hash instead of name
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All information passed over the IRMd/IPCP boundary for using IPC
services (flow allocation, registration) is now hashed. This
effectively fixes the shared namespace between DIFs and the IRMDs.
This PR also fixes some API issues (adding const identifiers),
shuffles the include headers a bit and some small bugs.
|
|/ |
|
| |
|
| |
|
|
|
|
|
|
| |
Setting the timeouts on flow_alloc and flow_accept will now work. This
makes some changes to the UNIX sockets used for management
communication between the APs, IRMd and IPCPs.
|
| |
|
| |
|
|
|
|
|
|
| |
The flow_alloc_res and flow_alloc_resp calls have been removed. The
flow_alloc and flow_accept calls are now both blocking and take an
additional timeout argument.
|
| |
|
|
|
|
|
| |
This solves some race conditions where packets arrive on a flow before
it is added to a flow_set.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The AE name should not be passed over the layer boundaries. If an
application has more than one AE it should exchange this in CACEP.
|
|
|
|
|
| |
The acceptor will not log disconnects with IRMd. Unexpected
disconnects will be reported and handled by management components.
|
|
|
|
|
|
|
|
| |
The IPCP will now respond with an ipcp_create_r message when it fails,
informing the IRMd.
Also adds some const qualifiers in the public headers and fixes
some formatting in dev.c.
|
|
|
|
|
| |
The -EAGAIN from a failed non-blocking flow read would trigger the
assertion. This snuck in somehow (we need some unit tests for dev.c).
|
| |
|
|
|
|
|
| |
Copyright is set to 2016 - 2017. License text on includes and sources
in the library are changed to indicate the LGPLv2.1 license.
|
|
|
|
|
|
|
|
|
|
| |
Now correctly relays the qoscube end-to-end in the stack.
A simple function specifying the cube in the spec is used for initial
testing.
The translation is now done in dev.c, but it could be moved elsewhere
when qos cabability matures and the need arises.
|
|
|
|
|
|
|
| |
An errno EIRMD has been added to errno.h to indicate failure to send a
message tot the IRMd. The IRM tool will report such errors, which
makes it easier for users to detect that the IRM was not started or
has failed.
|
|
|
|
|
| |
If a thread with a pending flow terminates, ap_fini would wait for the
condvar to destroy the flow indefinitely.
|
|
|
|
|
| |
The QoS cubes were not initialized in dev.c, which sometimes caused
segfaults in the fmgr when calling ipcp_flow_get_qoscube.
|
|
|
|
|
| |
This corrects the license statements on all files. Installed headers
are LGPLv2.1, the rest of the code is GPLv2.
|