summaryrefslogtreecommitdiff
path: root/src/tools/irm
Commit message (Collapse)AuthorAgeFilesLines
* build: Comply with -Wextra compiler flagdimitri staessens2016-10-215-1/+13
| | | | | This reduces the risk for some bugs, for instance due to signed/unsigned mismatches and unused variables.
* lib, ipcp: Revise fast path and flow interfacesdimitri staessens2016-10-042-2/+0
| | | | | | | | | | | | 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
* ipcpd: normal: Add operations to get and set the PCISander Vrijders2016-09-071-12/+13
| | | | | | | | | 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.
* tools, irm: Fix segfault with missing parametersdimitri staessens2016-08-311-2/+2
|
* tools: Fix memleak in irm_ipcp_enrolldimitri staessens2016-08-251-2/+5
|
* irm: Deprecate BIND_AP_LOCdimitri staessens2016-08-231-2/+0
| | | | Location-dependent names should be managed by a higher-level NMS.
* tools: Fix segmentation faultsdimitri staessens2016-08-222-4/+6
| | | | | The apis parameter is not set if the IRMd is not running when running the tool.
* tools: Add missing filesdimitri staessens2016-08-212-0/+161
|
* irmd, lib: Rebuild the IRMd data modeldimitri staessens2016-08-2110-80/+390
| | | | | | | | | | | | | | | | | | | | | | 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.
* tools: irm: Create IPCP upon enroll if unexistingSander Vrijders2016-08-112-2/+11
| | | | | This will create a new IPCP if enroll is called on a non existing IPCP. It also fixes two memleaks.
* tools: irm: Create IPCP on bootstrap if unexistingSander Vrijders2016-08-101-2/+7
| | | | | | 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.
* Merged in sandervrijders/ouroboros/be-enrolment (pull request #182)dimitri staessens2016-08-011-10/+3
|\ | | | | | | Be enrolment
| * ipcpd: normal: Provide initial steps for enrollmentSander Vrijders2016-07-271-10/+3
| | | | | | | | | | | | 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.
* | lib: Portability to FreeBSDdimitri staessens2016-07-291-1/+3
|/ | | | | | | | | | 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.
* ouroboros: Use ouroboros errno.hdimitri staessens2016-07-071-1/+1
| | | | | All includes of <errno.h> within ouroboros are replaced with the ouroboros errno.
* tools, irm: move binary check to librarydimitri staessens2016-07-031-7/+9
| | | | | | | 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.
* irm bind: fixed double newlinedimitri staessens2016-07-031-2/+2
|
* irmd, tools: checks on binarydimitri staessens2016-07-031-0/+12
| | | | | | | 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
* lib, irmd, ipcpd: Change of IRM APISander Vrijders2016-06-2812-179/+332
| | | | | | | | | | | | | | 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
* build: correct sandboxingdimitri staessens2016-06-271-1/+1
| | | | | paths cannot start with "/" or PREFIX will be omitted. PREFIX must be set before the project() call.
* build: Fix installation prefixSander Vrijders2016-06-271-1/+1
| | | | | | 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.
* build: Change install directories and set correct permissionsSander Vrijders2016-06-201-1/+1
| | | | | | | | | 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
* Merge remote-tracking branch 'upstream/be' into be-llcSander Vrijders2016-06-146-99/+180
|\
| * lib, irmd, tools, ipcpd: updates to dev API.dimitri staessens2016-06-136-99/+180
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | ipcpd: Adds a shim over IEEE 802.2 over IEEE 802.3Sander Vrijders2016-06-142-3/+21
|/ | | | | This adds a shim over LLC over Ethernet. It uses the raw socket API to send messages directly over an interface.
* ipcpd: IPCP over local memorydimitri staessens2016-05-282-2/+8
| | | | | | | | | | | | | 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
* tools: Fix log message in irm toolSander Vrijders2016-05-101-1/+1
| | | | | A wrong log message was being printed if the bootstrap command was called with a wrong parameter.
* lib: irm.h create_ipcp now returns pid_tdimitri staessens2016-04-261-1/+1
| | | | | ipcp_create now returns the pid of the created process to allow for more efficient scripting.
* lib: instance ID's are now set to the process PIDdimitri staessens2016-04-261-7/+4
| | | | | | | | 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.
* ipcpd: initial IPC processesdimitri staessens2016-04-181-2/+12
| | | | | | | | | | | 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.
* lib: Change ipcp typesSander Vrijders2016-04-112-6/+4
| | | | | This changes the name of the IPCP types after discussions with Dimitri.
* tools: Update irm bootstrapSander Vrijders2016-04-111-4/+106
| | | | | This updates irm bootstrap so that the parameters from the struct dif_config can be correctly filled in from the command line.
* lib, irmd, irm: Add dif_configSander Vrijders2016-04-082-6/+19
| | | | | | | | | 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.
* lib: Remove check for equal namesSander Vrijders2016-04-021-2/+0
| | | | | Removes name_is_equal. Just using instance_name_cmp is encouraged. It also removes a wrong initialization in the irm tool.
* lib: renamed rina_name_t to instance_name_tdimitri staessens2016-03-308-41/+32
| | | | | all functions taking a char * ap_name and uint id now take either a instance_name_t or instance_name_t *
* lib: Update irm.h APISander Vrijders2016-03-288-92/+83
| | | | | | 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.
* lib: Adds IRMd messages for the dev.h API callsSander Vrijders2016-03-247-30/+2
| | | | | | 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.
* tools: Simple echo applicationSander Vrijders2016-03-211-2/+1
| | | | | | 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 clang compilation errorsDimitri Staessens2016-03-141-0/+2
| | | | | fixed a signed-unsigned mismatch in du_buff.c fixed an uninitialised variable in irm
* lib: Add helpers for RINA namesSander Vrijders2016-03-112-0/+3
| | | | This adds helper functions for RINA names, to aid with handling them.
* Merged in sandervrijders/ouroboros/be-tests (pull request #23)Dimitri Staessens2016-03-071-1/+1
|\ | | | | | | Testing framework
| * build: Add check target, fix packagingSander Vrijders2016-03-071-1/+1
| | | | | | | | | | | | | | | | | | 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.
* | include: Fixed missing 'struct', renamed dif_infoDimitri Staessens2016-03-031-3/+3
| | | | | | | | | | common.h: dif_info renamed to dif_config missing struct fixed
* | tools: irm: Change description in irm fileSander Vrijders2016-03-031-1/+1
| | | | | | | | This adds the word daemon to the description of the IRM tool.
* | tools: irm: Provide all IRM callsSander Vrijders2016-03-039-39/+271
| | | | | | | | | | | | | | 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.
* | tools: irm: Parse arguments for irm and create_ipcpSander Vrijders2016-03-0212-80/+419
| | | | | | | | | | | | 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.
* | tools: Parse command line paramsSander Vrijders2016-03-021-10/+16
|/ | | | | This adds initial support to the irm tool for parsing command line parameters.
* lib, irmd, tools: Provide more IRM messagesSander Vrijders2016-03-011-0/+28
| | | | | | | 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.
* lib, irmd, tools: Support to create IPCPsSander Vrijders2016-02-251-0/+2
| | | | | | | 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.
* lib: Initial messages for the IRMSander Vrijders2016-02-231-1/+12
| | | | | This provides the initial messages to be passed between the irmd and libouroboros-irm.