summaryrefslogtreecommitdiff
path: root/src/tools/irm
Commit message (Collapse)AuthorAgeFilesLines
* build: Format CMakeLists.txt filesSander Vrijders2017-03-031-21/+21
| | | | The CMakeLists files are now properly indented.
* ipcpd, lib: Revise normal IPCPdimitri staessens2017-02-061-1/+10
| | | | | | | | | | This PR updates the normal IPCP to use the new RIB. The old ribmgr is removed and replaced by a stub that needs to be implemented. All components (dir, fmgr, frct) were adapted to the new RIB API. A lot of functionality was moved outside of the ribmgr, such as the addr_auth, which is now a component of the IPCP. The address is also stored to the ipcpi struct. The irm tool has an option to set the gam policy of the rib manager.
* ipcpd: normal: Create policies for GAMSander Vrijders2017-01-121-2/+11
| | | | | This allows the selection of a policy for the graph adjacency manager. Currently we only support constructing a complete graph.
* Merge remote-tracking branch 'upstream/be' into be-gamSander Vrijders2017-01-0916-16/+16
|\
| * build: Update licenses and copyrightdimitri staessens2017-01-0919-19/+19
| | | | | | | | | | Copyright is set to 2016 - 2017. License text on includes and sources in the library are changed to indicate the LGPLv2.1 license.
* | ipcpd: Let IPCPs bind a nameSander Vrijders2017-01-093-9/+3
|/ | | | | | | This allows IPCPs to bind a name, so that they can announce their name to neighbors which can then allocate a flow to them. Registering of the name happens by an administrator. It also moves the irmd_api to common ground, since it is used by all IPCPs.
* include, lib: Report communication failure with the IRMddimitri staessens2016-12-282-6/+20
| | | | | | | 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.
* ouroboros: Correct license statementsdimitri staessens2016-12-2419-57/+38
| | | | | This corrects the license statements on all files. Installed headers are LGPLv2.1, the rest of the code is GPLv2.
* tools: Fix issues in irm bind/unbinddimitri staessens2016-12-065-4/+9
| | | | | Fixes a segmentation fault in irm unbind api when no pid is specified and improves the help information for bind/unbind.
* tools: Allow binding AP specifying relative pathdimitri staessens2016-12-051-1/+12
|
* Merged in sandervrijders/ouroboros/be-addr-auth (pull request #296)dimitri staessens2016-11-011-1/+11
|\ | | | | | | ipcpd: normal: Add policy for obtaining a flat address
| * ipcpd: normal: Add policy for obtaining a flat addressSander Vrijders2016-11-011-1/+11
| | | | | | | | | | | | This adds a policy for obtaining a flat address, and thus also the infrastructure for policies in the IPCP. The IPCP should check if the address is available; this is currently not there yet.
* | tools: Fix memleak in ipcp bootstrapdimitri staessens2016-10-301-1/+3
|/
* tools: irm: Bind IPCP name to IPCP-ISander Vrijders2016-10-263-3/+18
| | | | | | This will invoke the bind operation when using the irm tool to create a new IPCP. The new IPCP will be bound to the IPCP name as specified by the administrator.
* irmd, tools: Fix missing initializersdimitri staessens2016-10-224-15/+15
| | | | | | | | | | | The BSD compiler requires explicit initializers for all fields with the -Wmissing-field-initializers flag enabled On branch be-fix-build # Changes to be committed: # modified: src/irmd/main.c # modified: src/tools/irm/irm.c # modified: src/tools/irm/irm_bind.c # modified: src/tools/irm/irm_ipcp.c # modified: src/tools/irm/irm_unbind.c # # Untracked files: # killouroboros.sh # start.sh #
* build: Compile with strict conversiondimitri staessens2016-10-2216-16/+16
| | | | | This has the code checked with -Wcast-qual and -Wconversion flags. These flags were removed because SWIG generated code fails.
* 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.