summaryrefslogtreecommitdiff
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
...
* 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-292-1/+8
|/ | | | | | | | | | 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-273-3/+3
| | | | | paths cannot start with "/" or PREFIX will be omitted. PREFIX must be set before the project() call.
* build: Fix installation prefixSander Vrijders2016-06-273-3/+3
| | | | | | 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-203-3/+3
| | | | | | | | | 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
* tools: fixed application shutdowndimitri staessens2016-06-162-6/+0
| | | | Tools would do a double ap_fini when an error occurred.
* Merge remote-tracking branch 'upstream/be' into be-llcSander Vrijders2016-06-1412-191/+236
|\
| * Fixed comments on #122dimitri staessens2016-06-141-2/+0
| |
| * lib, irmd, tools, ipcpd: updates to dev API.dimitri staessens2016-06-1312-191/+238
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: updated cbr with flood and sleep optionsdimitri staessens2016-05-272-21/+60
| | | | | | | The cbr client will now use busy waiting by default to control the sending rate. A --sleep option has been added to allow low CPU usage when sending at low data rates. A --flood option has been added that writes SDU's as fast as possible.
* tools: Add threadpool to cbrSander Vrijders2016-05-262-36/+125
| | | | | This adds a threadpool to cbr, so that it is not overflooded with client requests.
* tools: cbr continues when a write failsdimitri staessens2016-05-251-2/+2
| | | | | the CBR tool would stop if the buffer is full. Now it will continue sending SDU's until the duration expires.
* tools: fixes comments on d74d67adimitri staessens2016-05-243-10/+10
|
* tools, lib: cbr tool for bandwidth testingdimitri staessens2016-05-245-0/+412
| | | | | | | | The tool sends constant bandwidth traffic between a client and a server. cbr --help for more info. Adds time_utils.h to the library containing useful functions for arithmetic with timespec and timeval structures.
* tools: Fix log messages in echo appSander Vrijders2016-05-102-8/+8
| | | | | This fixes bad indentation and log messages without a newline in the echo application.
* 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/irmd/ipcpd/tools: fixes comments on eb9f443dimitri staessens2016-05-082-8/+4
|
* irmd: flow allocation and fast pathdimitri staessens2016-05-072-22/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit has a first implementation of flow allocation (the "slow path") and read/write (the "fast path") for ouroboros. It provides basic but unstable communications over the shared memory. It required a lot of changes all over the stack, and fixes a number of previously undetected issues. This PR still need heavy revision regarding data model, locking and cleanup. lib/dev: modifications to the API. It now uses an ap_init() call to set the AP name and sets the Instance ID to the pid of the process. It also binds the AP to the shared memory and creates tables for mappings in the fast path. A call to ap_fini() releases the resources. lib/shm_ap_rbuff: added ring buffer for data exchange between processes in the fast path. It passes an index in the shm_du_map. lib/shm_du_map: rewrote API to work with calls from dev.c. Garbage collector added. Tests updated to new API. ipcpd/ipcp-data: removed everything related to flows, as these are universal for all ap's and kept in ap_data (dev.c), or similar structs for shim ipcps. shim-udp: added flow allocator and read/write functions and shm elements. irmd: revised data model and structures necessary for flow allocation. tools: echo updated to new dev.h API. messaging system was updated to comply with new flow allocation messages. All exchanges use pid and port_id to bootstrap the fast path.
* 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: fixes comments on 18c5da3dimitri staessens2016-04-211-2/+2
|
* irmd: application registrationdimitri staessens2016-04-211-1/+2
| | | | | | Initial code for application registration. Specifying "*" will (for now) register with the first IPCP available in the system. Modified the echo server not to barf messages on failed accept()
* 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-3010-43/+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-249-35/+6
| | | | | | 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-216-2/+247
| | | | | | 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.