| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This reduces the risk for some bugs, for instance due to
signed/unsigned mismatches and unused variables.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
This adds the operations needed in the normal IPCP to get and set the
Protocol Control Information. It allows to allocate or release space
in the current DU. The struct pci can be serialized into newly
allocate space. Vice versa, a struct pci can be deserialized given a
DU. It allows for decreasing the TTL in the DU and for calculating the
CRC32. The TTL and CRC32 can now be selected when creating a new DIF.
|
| |
|
| |
|
|
|
|
| |
Location-dependent names should be managed by a higher-level NMS.
|
|
|
|
|
| |
The apis parameter is not set if the IRMd is not running when running
the tool.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The complete data model inside the IRMd has been restructured. The
bind operation was revised to allow binding of AP and AP instances and
register those names with different DIFs (see "irm bind" for details).
Server applications require to call ap_init with a server name
argument, client application that do not the be reachable over any DIF
can call ap_init(NULL). Calling ap_init for a client with a specified
name will not have adverse consequences for the application, but will
consume unnecessary resources in the IRMd.
Application servers can now be started at any point after the IRMd has
been started. Starting servers, binding AP names and registering names in
DIFs can be performed in any order that does not defy temporal logic.
Supports naming instances by their pid. In case of IPCP Instances
created with the IRM tool, the name assigned during "irm ipcp create"
can be used.
All the changes required updates in the tools.
|
|
|
|
|
| |
This will create a new IPCP if enroll is called on a non existing
IPCP. It also fixes two memleaks.
|
|
|
|
|
|
| |
If the admin tries to bootstrap an IPCP that does not yet exist, it
will first create the IPCP, then bootstrap it since it has all
required information.
|
|\
| |
| |
| | |
Be enrolment
|
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
|
|
| |
Various portability fixes for FreeBSD. POSIX requires shm file names
to start with a "/" to be portable. lseek(2) can be undefined on
POSIX shm, replaced with ftruncate(2). IRMd check on existing lockfile
more portable.
FreeBSD 11.0 is preferred as it natively supports robust mutexes.
Full working LLC implementation pending.
|
|
|
|
|
| |
All includes of <errno.h> within ouroboros are replaced with the
ouroboros errno.
|
|
|
|
|
|
|
| |
This will make the library check if the user has permissions to
execute the binary when auto is set. This prevents writing malicious
software that would use the irmd to execute other applications to
which the user has no access.
|
| |
|
|
|
|
|
|
|
| |
The bind tool and the auto_execute function will check if the binary
exists and is executable.
Return value of auto_execute corrected to pid_t
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes the IRM API after discussions with Dimitri. The register
operation is now split into a bind and register operation. The same
for unregister; unbind and unregister. PIDs are now used as the
application instance name. A name for a PID is only provided for
scriptability in bash. It is therefore also no longer passed down to
the IPCP. Every operation on an IPCP through the IRM API has to use
the PID. Quering of the PIDs by name is possible. The IRM tool has
been updated to use this new API as well. A subcommand 'ipcp' has been
added for operations that take effect on IPCPs only.
Fixes #12
|
|
|
|
|
| |
paths cannot start with "/" or PREFIX will be omitted. PREFIX must be
set before the project() call.
|
|
|
|
|
|
| |
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
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The registration function has been moved to the irm tool, applications
now need to be registered by an administrator. Currently only supports
one instance per registered name, and an AP can be registered under
only one name.
The irmd can now start a registered server application on demand.
For the full functionality of the tool, execute "irm register".
AP name removed from flow allocation. Flow allocation does not send
the source ap name as it is quite useless. The accept() call now only
returns the AE name.
|
|/
|
|
|
| |
This adds a shim over LLC over Ethernet. It uses the raw socket API to
send messages directly over an interface.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This introduces an IPC process that relays data between two local AP's
over the shm_du_map. Only configuration it has is a DIF name.
It required small modification elsewhere:
lib: added support for the IPCP_LOCAL type
irm: added support for the IPCP_LOCAL type
dif_config: added the IPCP_LOCAL type
tools: added support for the IPCP_LOCAL type
|
|
|
|
|
| |
A wrong log message was being printed if the bootstrap command was
called with a wrong parameter.
|
|
|
|
|
| |
ipcp_create now returns the pid of the created process to allow for
more efficient scripting.
|
|
|
|
|
|
|
|
| |
All instance-id's in ouroboros will be set by the system to the pid of
the process associated with this application process instance. This
means that the user has no way to choose the instance id's. Function
calls that assumed manually defined instance id's have been replaced
throughout the system.
|
|
|
|
|
|
|
|
|
|
|
| |
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 changes the name of the IPCP types after discussions with
Dimitri.
|
|
|
|
|
| |
This updates irm bootstrap so that the parameters from the struct
dif_config can be correctly filled in from the command line.
|
|
|
|
|
|
|
|
|
| |
This adds dif_config to the prototype, in which one is able to specify
the parameters a DIF should have. The bootstrap operation of an IPCP
takes this as parameter and is oblivious to whether it is a shim or a
normal IPCP. The dif_config struct is also correctly serialized and
deserialized and passed opaquely to the correct IPCP. This IPCP is in
charge of deserializing it correctly.
|
|
|
|
|
| |
Removes name_is_equal. Just using instance_name_cmp is encouraged. It
also removes a wrong initialization in the irm tool.
|
|
|
|
|
| |
all functions taking a char * ap_name and uint id now take either a
instance_name_t or instance_name_t *
|
|
|
|
|
|
| |
Removes rina_name_t from that API. Passing ap_name and api_id as
params instead. The IRM tool has been updated accordingly. Some errors
in the build related to protobuf-c have also been resolved.
|
|
|
|
|
|
| |
This adds several messages for the dev.h API calls to communicate with
the IRM daemon. The deserializing of these messages is still missing
and the irmd hasn't been updated with them either.
|
|
|
|
|
|
| |
This adds a simple echo application written to show application how to
use the API. It also updates the dev.h header file with the insights
gained from performing this excercise.
|
|
|
|
|
| |
fixed a signed-unsigned mismatch in du_buff.c
fixed an uninitialised variable in irm
|
|
|
|
| |
This adds helper functions for RINA names, to aid with handling them.
|
|\
| |
| |
| | |
Testing framework
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
common.h: dif_info renamed to dif_config
missing struct fixed
|
| |
| |
| |
| | |
This adds the word daemon to the description of the IRM tool.
|
| |
| |
| |
| |
| |
| |
| | |
This commit makes all IRM calls available to the user of the 'irm'
tool. The bootstrap_ipcp call does not yet take the anything except
the AP name. This will be added once we stabilize what should be
configurable in the IPCP.
|
| |
| |
| |
| |
| |
| | |
This parses the arguments passed to irm at the top level, and also the
arguments supplied when calling irm create_ipcp. It subsequently calls
irm_create_ipcp with these arguments.
|
|/
|
|
|
| |
This adds initial support to the irm tool for parsing command line
parameters.
|
|
|
|
|
|
|
| |
This provides the other messages that are used to communicate between
the library and the IRM Daemon. The IRM tool just calls the library
right now to see if it works. A full fledged program will be provided
in a next commit.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This provides the initial messages to be passed between the irmd and
libouroboros-irm.
|