summaryrefslogtreecommitdiff
path: root/include/ouroboros/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* build: Use GNUInstallDirs instead of hardcoded values0.9.9Sander Vrijders2018-02-061-1/+1
| | | | | | | | This changes the build to use GNUInstallDirs instead of hardcoded values. Package maintainers can then override these defaults by passing the correct value to cmake on the command line. Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
* include: Add version header0.9.0Dimitri Staessens2018-01-101-1/+6
| | | | | | | | This moves the version definition for Ouroboros into its own header file, which is generated by CMake and installed on the system. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
* ipcpd: Revise internals of normal IPCPdimitri staessens2017-09-121-2/+0
| | | | | | | | This removes the RIB as a datastructure and CDAP as the protocol between IPCPs. CDAP, the rib and related sources are deprecated. The link-state protocol policy is udpated to use its own protocol based on a simple broadcast strategy along a tree. The neighbors struct is deprecated and moved to the library as a generic notifier component.
* lib: Add fccntl configuration commanddimitri staessens2017-08-311-1/+1
| | | | | | | This replaces the flow_set_* commands with a single fccntl command that can configure flows and the FRCT instance. For more details, see "man 3 fccntl".
* build: Revise the build systemdimitri staessens2017-08-211-4/+0
| | | | | | | | | | 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.
* ipcpd: Allow specifying fixed syntaxdimitri staessens2017-05-151-0/+1
| | | | | | This commits adds the functions and messages to specify a fixed protocol syntax during CACEP. It also revises the messages for specifying the DT protocol syntax from the irm tool.
* lib: Remove dependency on installed headersSander Vrijders2017-04-241-0/+1
| | | | | | | The header ipcp.h was not installed systemwide, giving compile time errors when trying to compile external programs that use irm.h. ipcp.h also included hash.h, which exposes project interal functions. The enum was moved to ipcp.h to prevent this.
* include: Add C++ directives in headersdimitri staessens2017-04-131-0/+1
| | | | Fixes #34
* lib, ipcpd, irmd: Register hash instead of namedimitri staessens2017-04-131-2/+0
| | | | | | | | | All information passed over the IRMd/IPCP boundary for using IPC services (flow allocation, registration) is now hashed. This effectively fixes the shared namespace between DIFs and the IRMDs. This PR also fixes some API issues (adding const identifiers), shuffles the include headers a bit and some small bugs.
* lib: Install cacep.h on installSander Vrijders2017-03-031-0/+1
| | | | | cacep.h was not installed on install, but other applications may want to use it as well.
* include: Add header for endiannessdimitri staessens2017-02-101-0/+1
| | | | | | | | | This adds a header for dealing with endianness in ouroboros. It is extracted from the byte_order header in the library (which now includes this header). It also exposes the functions ntohl, ntohll, htonl and htonll, necessary for converting 32 and 64 bit values for storage and retrieval from the RIB (which should store multi-byte values in network byte order).
* lib: Demultiplex the fast pathdimitri staessens2016-10-211-2/+2
| | | | | | | | 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.
* lib, ipcp: Revise fast path and flow interfacesdimitri staessens2016-10-041-1/+1
| | | | | | | | | | | | 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
* lib: dev: Provide a set of fds to flow_selectdimitri staessens2016-09-061-1/+2
| | | | | | | The flow_select call now takes as a parameter a flow_set_t, which specifies a set of flow descriptors that will unblock the select call when an SDU for one of them arrives. The select call has been moved to its own header.
* lib: Add wrappers for PythonSander Vrijders2016-08-161-0/+2
| | | | | | This adds SWIG to the build and wraps the Ouroboros library so that it can be called through Python scripts. If either SWIG or Python cannot be found, no bindings are generated.
* ipcpd: normal: Allow exchange of static DIF informationSander Vrijders2016-08-081-1/+0
| | | | | | This adds the functionality of exchanging the static DIF information between 2 DIF members. After exchange the enrollment is stopped, and the IPCP that initiated enrollment transitions to the enrolled state.
* lib: Provide first implementation of revised CDAPSander Vrijders2016-07-051-9/+9
| | | | | | | | This commit introduces a first version of the revised CDAP specification. CACEP (for authentication purposes) has been separated from CDAP. Application developers may use CDAP if they find it useful. Within Ouroboros CDAP will be used to perform operations on the RIB of an IPCP.
* lib, irmd, ipcpd: Change of IRM APISander Vrijders2016-06-281-3/+2
| | | | | | | | | | | | | | 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: 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.
* lib: Change DA header to NSMSander Vrijders2016-06-221-1/+1
| | | | | | Functionality that was previously thought to be part of the DIF Allocator is actually namespace management. Hence the file has been renamed and the API updated.
* lib: Add errnos specific for OuroborosSander Vrijders2016-06-221-1/+1
| | | | | | | This adds error numbers specificly for Ouroboros. It also refactors some of the header files that are installed. Fixes #2
* 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
* tools, lib: cbr tool for bandwidth testingdimitri staessens2016-05-241-0/+1
| | | | | | | | 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.
* lib: Fix header inclusionSander Vrijders2016-05-141-2/+2
| | | | | | This fixes wrong header inclusion that would make programs which are not developed within ouroboros fail upon compilation, since they would not find certain headers on their system.
* lib, ipcpd, irmd: Add QoS cube definitionSander Vrijders2016-05-141-11/+1
| | | | | | | | | | This adds the QoS cube definition, which is an enum to select which QoS is needed in the IPCP. An application has to use the qos_spec in qos.h to define what it needs. The IRMd will map this unto a qos cube definition. Some headers are now also no longer installed on the system, since they are only to be used within the irmd and ipcps.
* include: added flow.h to CMakelistsdimitri staessens2016-05-121-0/+1
|
* irmd: flow allocation and fast pathdimitri staessens2016-05-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: moved flow header and source to ipcpddimitri staessens2016-04-191-1/+0
|
* lib, irmd, irm: Add dif_configSander Vrijders2016-04-081-0/+1
| | | | | | | | | 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.
* Merge branch 'be' of bitbucket.org:ouroboros-rina/ouroboros into be-flowdimitri staessens2016-03-301-1/+1
|\
| * lib: renamed rina_name_t to instance_name_tdimitri staessens2016-03-301-1/+1
| | | | | | | | | | all functions taking a char * ap_name and uint id now take either a instance_name_t or instance_name_t *
* | Merge branch 'be' of bitbucket.org:ouroboros-rina/ouroboros into HEADdimitri staessens2016-03-301-1/+1
|\|
| * build: Add protobuf-c commands for cmakeSander Vrijders2016-03-251-1/+1
| | | | | | | | | | | | This adds a cmake file so that the build can ask to generate protobuf-c files from .proto files. The messages between the IRM and the library are compiled into the library.
* | lib: api for handling flowsdimitri staessens2016-03-301-0/+1
|/ | | | | moved the flow definition to the library and made it public. thread-safety implemented without compiler checks.
* lib: shared memory mapDimitri Staessens2016-03-191-0/+1
| | | | | | | | | | | | | | | | | | The shared memory map will allow passing SDU's between IPCPs efficiently. It is a single block of managed memory. SDU's are stored in a shm_du_buff datastructure, which is a list of blocks inside the shared memory region. The mechanism for passing SDU's is not yet implemented and could be either within the region or using another local IPC mechanism. The following things are configured at compile time: SHM_FILE_NAME : the name. Default is "ouroboros_du_map". SHM_DU_BUFF_BLOCK_SIZE: size of a block inside the shared memory region. Default is the pagesize of the system. SHM_DU_MAP_SIZE : the approximate size in bytes of the shared memory map. The actual filesize may differ by a small margin. Default is 4MB.
* irmd, lib: Create and destroy IPC ProcessesSander Vrijders2016-03-151-1/+6
| | | | | | 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.
* lib: Add helpers for RINA namesSander Vrijders2016-03-111-0/+1
| | | | This adds helper functions for RINA names, to aid with handling them.
* build: Add check target, fix packagingSander Vrijders2016-03-071-4/+14
| | | | | | | | | 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.
* Initial build infrastructureSander Vrijders2016-02-111-0/+6
Contains the initial build infrastructure. Cmake was chosen for portability reasons.