| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
This refactors ouroboros to use "program" instead of "application
process" and "process" instead of "application process instance" to
align with current naming in current Operating Systems courses instead
of the ISO nomenclature adopted by RINA. This change permeates through
the entire implementation. Also contains some minor other refactors.
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
|
|
|
|
|
|
|
|
| |
Some compiler versions complained about a missing return in non-void
function.
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
|
|
|
|
|
|
|
|
| |
When the netmap driver is used for the LLC shim, the label
fail_device: was never used, resulting in a compiler error.
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit deprecates ouroboros_init and ouroboros_fini and adds them
as a constructor or destructor, causing these function to be run
automatically when a program that links to the library calls and exits
main(). For this to fully work, the library had to be split so that we
can avoid the irmd calling these functions (the IRMd has to create the
shm structures on which these calls depend).
The library is split in 3 parts: libouroboros-dev, libouroboros-irm
and libouroboros-common. The latter is linked to the other two so that
including libouroboros-dev or libouroboros-irm will also link
libouroboros-common.
|
|
|
|
|
| |
Closing the file descriptor after a while(true) loop led to clang
compiler errors. This is fixed by adding a cleanup handler.
|
|
|
|
|
|
| |
This reduces CPU consumption and shutdown times.
Invalidates #43
|
|
|
|
|
|
|
|
| |
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 fixes the compilation on FreeBSD systems. A define was
missing. It also fixes some style errors.
|
|
|
|
|
| |
This adds a check in the shims if a name was already registered, since
it should not return an error.
|
|\
| |
| |
| | |
shim-eth-llc: Hide directory query locking
|
| |
| |
| |
| |
| |
| |
| | |
The locking of the directory queries was happening in the
shim-eth-llc, but it should be done within the shim-data functions.
Fixes #30
|
|/ |
|
|
|
|
| |
This fixes several bugs as reported by the clang static analyzer.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 LLC shim was not being built even though it should be build. This
is due to CMake behaviour that when you set a var in the parent scope,
it is not set in the local scope. It also adds back THIS_TYPE to the
shim-eth-llc.
|
|
|
|
|
|
|
|
|
|
| |
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 support reading Ethernet frames using the Berkeley Packet
Filter (BPF). Ouroboros now fully runs on OS X Sierra.
|
| |
|
| |
|
|
|
|
|
|
| |
This fixes pthread_condtimedwaits in the flow allocator of all IPCPs
that had bad deadlines set (the interval instead of the actual
absolute time).
|
|
|
|
|
|
|
| |
This will hardcode the shim hash algorithms as they don't have an
enrollment phase.
Fixes #44
|
|
|
|
|
|
|
| |
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, ...
|
| |
|
|
|
|
|
|
| |
This commits adds the functions and messages to specify a fixed
protocol syntax during CACEP. It also revises the messages for
specifying the DT protocol syntax from the irm tool.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Currently CRC32, MD5, and SHA3 (224, 256, 384 and 512 bit) are supported.
|
|
|
|
| |
Fixes #22
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
Adds support for netmap (https://github.com/luigirizzo/netmap) to
increase the performance of packet transfer over the LLC shim.
|
| |
|
|
|
|
|
| |
This avoids handling the mgmt frames under lock, since it may deadlock
if a new mgmt frame arrives in the meantime.
|
|
|
|
|
|
| |
This fixes the overwriting of management frames by adding a list in
the shim Ethernet that keeps track of management frames instead of a
single buffer.
|
|
|
|
|
| |
This adds a lock to prevent a race condition between flow_req_arr and
flow_alloc_resp.
|
|
|
|
|
| |
The state check should be done first to avoid blocking on the recv
call.
|
|
|
|
|
| |
This removes the rwlock in the shim-eth-llc IPCP since it is already
protected by a mutex.
|
|
|
|
|
| |
This removes cancellation calls from the shim Ethernet. The different
threads now check if the IPCP is still operational or not.
|
|
|
|
|
|
| |
This deprecates these special socket options of the raw socket since
they are less efficient for regular packet I/O. They should be more
performant for batch processing of SDUs.
|
|
|
|
|
|
| |
This adds a thread to handle management frames, since otherwise a
deadlock can occur by blocking SDUs until flow allocation can be
handled.
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Also fixes another lock.
|
|
|
|
|
|
| |
This removes the logs that would print to stdout if the IPCP fails to
initialize. If the user had asked that logs would be printed to the
syslog this would be unwanted behaviour.
|
|
|
|
|
|
|
|
|
|
|
|
| |
FreeBSD defines its own bswap64 in the <sys/endian.h> header, which is
now included correctly.
POSIX requires XSI or RTS extensions to be enabled for the
sa_sigaction field to be visible. Linux doesn't do the check
correctly, but FreeBSD does.
Removes the LOG_MISSING call which was deprecated with the last
revision of the logging system.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
This removes the logfile and outputs log messages to the logging
system. The creation of the logfiles (as well as the ap_init() call)
were moved into ipcp_init() to simplify the IPCP creation and
shutdown.
Fixes #25
Fixes #27
|
|
|
|
|
|
|
|
|
| |
The ipcp-ops header was removed and merged into ipcp.h. The common
components dif_name and ipcp_type have been moved to the main ipcp
struct. After this move, ipcp_data only contained shim information, so
it was renamed to shim_data. The ipcp_init() function checks the type
and will only include the shim_data if the type is not an IPCP_NORMAL.
All ipcps have been adapted to this change in API.
|
| |
|