| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
This sets the cmake variable CMAKE_REQUIRED_FLAGS to the compiler
flags that are being tested so that the linker doesn't fail when
trying the compile flag.
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
|
|
|
|
|
|
|
|
|
| |
This adds three build types, DebugASan, DebugTSan and DebugLSan that
enable the Address, Thread and Leak Sanitizer by setting the fsanitize
flag to the compiler. This option is supported by both gcc and clang.
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
|
|
|
|
|
|
|
| |
This automatically sets the -O3 compiler flag for release builds.
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.
|
| |
|
|
|
|
|
|
| |
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 adds a systemd unit for the irmd on installation of Ouroboros.
|
|
|
|
|
|
|
|
|
|
| |
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 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 will install the manpages found in doc/man/ during installation.
Fixes #38
|
|
|
|
| |
The CMakeLists files are now properly indented.
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
This corrects the license statements on all files. Installed headers
are LGPLv2.1, the rest of the code is GPLv2.
|
|
|
|
| |
All flags from the -Wextra group but -Wclobbered are added.
|
|
|
|
|
|
|
| |
pthread_cleanup handlers make gcc and clang fail the -Wclobbered check
in release builds. Swig generates switch statements without a default,
making the -Wswitch-default check fail. The -Wstrict-overflow=5 flag
was removed.
|
|
|
|
|
| |
This has the code checked with -Wcast-qual and -Wconversion flags.
These flags were removed because SWIG generated code fails.
|
|
|
|
|
| |
This reduces the risk for some bugs, for instance due to
signed/unsigned mismatches and unused variables.
|
|
|
|
|
|
|
|
| |
The fast path will now use an incoming ring buffer per flow per
process. This necessitated the development of a new method for the
asynchronous io call, which is now based on an event queue system for
scalability (fqueue). The ipcpd's and tools have been updated to this
API.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
The protobuf include directory was not being correctly handed to the
compiler when building. Now the include directory is added
project-wide. And the protobuf package is searched for only once.
|
|
|
|
|
|
|
|
|
|
| |
Writing output to log files is now enabled by default. Logs are
written to <INSTALL_PREFIX>/var/log/ouroboros, which is created on
install. There is a log file for the irmd and one per IPCP. To still
get (colored) output on stdout, provide the --stdout switch when
starting the irmd.
Fixes #17
|
|
|
|
|
|
| |
The installation prefix was taking a trailing backslash, while it is
common not to do so. Fixed it so that any trailing backslash is
removed by the compilation and installation scripts.
|
|
|
|
|
|
|
|
|
| |
This sets the correct install directories for all the binaries,
library and header files. It also sets the right permissions on the
sockets and shared memory so that regular users can also use the
ouroboros library. Root privileges are required to run the irmd.
Fixes #7
|
|
|
|
|
|
|
|
|
|
|
| |
Basic functions for implementation of IPC processes, and
implementation of core functions of the shim IPCP over UDP. Updates
to the build system to compile these IPC processes, as well as some
fixes in the irmd (rudimentary capturing exit signals) and some fixes
in the library, mainly relating to the messaging.
Basic implementation of creation / bootstrapping / deletion of the
shim UDP. Placeholders for other functions.
|
|
|
|
|
|
| |
This adds the functionality to create and destroy IPCPs. Upon creation
a new process is forked and execve'd. Upon destruction the IPCP is
destroyed by killing it with SIGTERM.
|
|
|
|
|
|
|
|
|
| |
This adds a build target 'check', which executes a test suite for
every daemon/library. Every test suite consists of a test driver that
executes a function in a file with the same name as the function. The
compile_debug script executes the 'check' target to validate there are
no regressions. Packaging is also fixed and the prototype can be
shipped as a tarball.
|
|
|
|
|
|
| |
This moves the debugging switch down to the CMakeList associated with
every program or library. It allows to build apps individually with
debugging info on or off.
|
|\
| |
| |
| | |
Be bugfixes
|
| |
| |
| |
| | |
This will show more interesting output when building in Semaphore.
|
|/
|
|
|
| |
This lower the minimum cmake version to 2.8.12 in order to allow
semaphore to build the prototype.
|
|
|
|
|
|
|
| |
Provides the initial support to create IPCPs via a command-line
tool. It extends the socket layer with a message that is sent over a
socket to the irmd when the irm_create_ipcp library function is called
from a program.
|
|\
| |
| |
| | |
build: Require usage of C89
|
| |
| |
| |
| |
| |
| | |
The flag for the C89 standard was added without checking if the
compiler supports it. This has been fixed. Also, the feature summary
has been (temporarily) disabled.
|
| |
| |
| |
| |
| |
| | |
This requires the usage of the C89 standard for all source files. It
also fixes a wrong check for the compiler flags (was checking this for
CXX compiler instead of the C compiler).
|
| |
| |
| |
| |
| |
| |
| | |
This renames the daemons to end with a 'd', as is common for UNIX
daemons. It also adds a tools folder, that will hold the tools of the
Ouroboros prototype. Examples are a simple echo application, an
application to instruct the IRM ...
|
| |
| |
| |
| | |
Compiles but untested. Expect bugs.
|
|/
|
|
|
|
|
| |
This renames the daemons to end with a 'd', as is common for UNIX
daemons. It also adds a tools folder, that will hold the tools of the
Ouroboros prototype. Examples are a simple echo application, an
application to instruct the IRM ...
|
|
|
|
|
|
| |
Adds the logging infrastructure to the prototype. 2 helper scripts are
also provided to compile the prototype in either release or debug
mode. In debug mode debugging logs are printed.
|
|
Contains the initial build infrastructure. Cmake was chosen for
portability reasons.
|