summaryrefslogtreecommitdiff
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
...
* tools: Change license to 3 clause BSDDimitri Staessens2017-10-2431-310/+808
| | | | | | | | | A more permissive license is needed on the tools since they serve as example code for programs built on top of the ouroboros-dev and ouroboros-irm libraries. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
* tools: Refactor echo to single source fileDimitri Staessens2017-10-243-127/+73
| | | | | | | | This simplifies the echo-app tool implementation to a single source file since it's meant to be a small example application. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
* Merged in dstaesse/ouroboros/be-deprecate-ouroboros-init-fini (pull request ↵dimitri staessens2017-10-1410-72/+7
|\ | | | | | | | | | | #626) Be deprecate ouroboros init fini
| * lib: Deprecate ouroboros_init and ourboros_finidimitri staessens2017-10-1410-72/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit deprecates ouroboros_init and ouroboros_fini and adds them as a constructor or destructor, causing these function to be run automatically when a program that links to the library calls and exits main(). For this to fully work, the library had to be split so that we can avoid the irmd calling these functions (the IRMd has to create the shm structures on which these calls depend). The library is split in 3 parts: libouroboros-dev, libouroboros-irm and libouroboros-common. The latter is linked to the other two so that including libouroboros-dev or libouroboros-irm will also link libouroboros-common.
* | lib: Re-enable multi-block supportdimitri staessens2017-10-131-2/+2
|/ | | | | | Multi-block support was forgotten during the update of the build system. This enables it again and fixes some bugs when it is disabled and larger SDUs are sent.
* ipcpd: normal: Add Loop-Free Alternates routingSander Vrijders2017-09-291-23/+28
| | | | | | This adds the Loop-Free Alternates (LFA) policy. In case a link goes down a LFA may be selected to route the SDUs on without causing loops instead of the main hop that just went down.
* ipcpd: normal: Add alternate hop PFFSander Vrijders2017-09-211-35/+41
| | | | | This adds a PFF that returns an alternate hop as next hop in case the hop that would have been returned is down.
* ipcpd: normal: Make PFF policy-basedSander Vrijders2017-09-201-2/+12
| | | | | This turns the PDU Forwarding Function of the IPCP into a policy. For now only the simple PFF policy is available.
* lib: Add fccntl configuration commanddimitri staessens2017-08-314-7/+7
| | | | | | | 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".
* tools: irm: Fix matching of name parameterSander Vrijders2017-08-294-14/+15
| | | | | The name parameter was not being matched correctly in ipcp connect and disconnect.
* dev: Revise fqueue API and add man pagesdimitri staessens2017-08-294-25/+24
|
* tools: Add tool to connect IPCP componentsdimitri staessens2017-08-285-8/+206
| | | | | | | | | | | | This enables user-written tools to instruct IPCPs to establish and tear down connections (a.k.a. adjacencies) between its internal components (Management and Data Transfer). For more info, do "irm ipcp connect" or "irm ipcp disconnect" on the command line. This commit exposes a deletion bug in the RIB where FSO's fail to unpack/parse. This will be fixed when the RIB is deprecated.
* ipcpd: Deprecate gam as autonomous componentdimitri staessens2017-08-281-24/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The graph adjacency manager has been deprecated in favor of providing an external interface into the connectivity manager so that adjacencies can be controlled from the command line, user scripts or user applications. The gam and its associated policies were removed from the normal IPCP and the IRM configuration tools. The "/members" part of the RIB was deprecated. Removal of the gam means that initial connectivity based on changes in the RIB can't be provided, so some changes were required throughout the normal IPCP. The enrollment procedure was revised to establish its own connectivity. First, it gets boot information from a peer by establishing a connection to the remote enrollment component and downloading the IPCP configuratoin. This is now done using its own protocol buffers message in anticipation of deprecation of the RIB and CDAP for communication within a DIF. After the boot information is downloaded, it establishes a data transfer flow for enrolling the directory (DHT). After the DHT has enrolled, it signals the peer to that enrollment is done, and the data transfer connection is torn down. Signaling connections is done via the nbs struct, which is now passed to the connmgr, which enables control of the connectivity graph from external sources.
* build: Revise the build systemdimitri staessens2017-08-217-16/+4
| | | | | | | | | | 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.
* build: Replace fsf snail mail with contact URLdimitri staessens2017-08-1331-31/+31
|
* lib, ipcpd, tools: Fix enum assignmentsSander Vrijders2017-08-101-6/+5
| | | | This fixes several assignments to the wrong enum type.
* build, lib, ipcpd, irmd: Add support for libgcryptdimitri staessens2017-08-091-9/+4
| | | | | | | | | | | | | | | | This adds support for libgcrypt. If at least version 1.7.0 of libgcrypt is present, it may be used for secure random number generation and is used for hashing in the irmd/ipcp. The hash definitions are moved to the internal hash.h header, and defined independently of the hashes that are defined as part of the directory policy for the normal IPCP. The translation is moved from the IRMd to ipcpd/ipcp.h. The bootstrap call from the IRMd expects the IPCP to return the correct hash algorithm with a dif_info struct, which is in line with the behavior of the enroll call. This also improves how some platform checks in the build system are handled.
* ipcpd, lib, irmd: Hardcode shim hash algorithmsSander Vrijders2017-07-121-39/+42
| | | | | | | This will hardcode the shim hash algorithms as they don't have an enrollment phase. Fixes #44
* ipcpd: normal: Make routing a policySander Vrijders2017-05-151-13/+21
| | | | | | This makes the routing component into a policy since different approaches may exist to do this, depending on how high the rank of the DIF is.
* ipcpd: Allow specifying fixed syntaxdimitri staessens2017-05-151-85/+52
| | | | | | 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.
* ipcpd: Allow specifying the hash algorithm to usedimitri staessens2017-04-161-42/+71
| | | | Currently CRC32, MD5, and SHA3 (224, 256, 384 and 512 bit) are supported.
* include, lib: Rename ap_init/ap_finidimitri staessens2017-04-135-13/+13
| | | | Fixes #35
* lib, ipcpd, irmd: Register hash instead of namedimitri staessens2017-04-131-4/+8
| | | | | | | | | 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.
* tools: Fix oping client outputdimitri staessens2017-04-031-2/+2
|
* tools: oping: Fix bad calculationSander Vrijders2017-04-011-1/+1
| | | | This fixes a potential overflow when calculating the packet loss.
* lib: Revise flow allocation APIdimitri staessens2017-03-318-86/+36
| | | | | | The flow_alloc_res and flow_alloc_resp calls have been removed. The flow_alloc and flow_accept calls are now both blocking and take an additional timeout argument.
* Change email addresses to ugent.beSander Vrijders2017-03-0331-67/+108
| | | | | | | Our mailserver was migrated from intec.ugent.be to the central ugent.be emailserver. This PR updates the header files to reflect this change as well. Some header files were also homogenized if the parameters within the functions were badly aligned.
* build: Format CMakeLists.txt filesSander Vrijders2017-03-035-33/+33
| | | | The CMakeLists files are now properly indented.
* lib: Remove application entity nameSander Vrijders2017-02-248-8/+8
| | | | | The AE name should not be passed over the layer boundaries. If an application has more than one AE it should exchange this in CACEP.
* tools: Continue oping server after failed writedimitri staessens2017-02-221-3/+1
| | | | | | When hammering the oping thread, it will have write fails when the buffer gets full as its flow is non-blocking. It would stop and deallocate the flow, but should just continue.
* tools: Fix overflow bug in opingdimitri staessens2017-02-221-9/+10
| | | | | | Sometimes the receiver thread got the SDU before the writer thread has set the sent time when testing over the local. The sent time is now written before actually sending to avoid this.
* lib, tools, ipcpd: Fix compilation on FreeBSDdimitri staessens2017-02-091-0/+1
| | | | | | | | | | | | FreeBSD defines its own bswap64 in the <sys/endian.h> header, which is now included correctly. POSIX requires XSI or RTS extensions to be enabled for the sa_sigaction field to be visible. Linux doesn't do the check correctly, but FreeBSD does. Removes the LOG_MISSING call which was deprecated with the last revision of the logging system.
* 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-0928-28/+28
|\
| * build: Update licenses and copyrightdimitri staessens2017-01-0931-31/+31
| | | | | | | | | | 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-2431-93/+62
| | | | | This corrects the license statements on all files. Installed headers are LGPLv2.1, the rest of the code is GPLv2.
* src, tools: Set/get timeout and get qos for flowsdimitri staessens2016-12-128-137/+64
| | | | | | | | | | | | | | | | Receiver timeouts can now be set on a flow using the flow_set_timeout function. Specifying NULL disables the timeout. The flow_get_timeout function gets the value for the timeout. This commit also deprecates fcntl in favor of flow_get_flags and flow_set_flags functions. struct qos_spec is typedef'd as a qosspec_t. The tools and cdap.c are updated to use the new API. Fixes a bug in operf client where the client's writer thread wouldn't cancel on SIGINT.
* tools: Shut down cbr gracefullydimitri staessens2016-12-102-5/+39
| | | | | | | Adds a simple cleanup handler that avoids abrupt termination during an sdu_write call, which potentially locks up the entire system due to the writes in the rdrbuff and rbuff not being handled as a single transaction.
* 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
|
* ipcpd, tools: Fix compilation on 32 bit linuxdimitri staessens2016-12-032-4/+4
| | | | | Fixes issues with uint64_t not corresponding with unsigned long in printf statements. Reorganises a calculation to reduce overflows.
* tools: Fix compilation issues on 32 bit machinesdimitri staessens2016-12-023-9/+10
| | | | | | size_t is 32 bits on those machines, failing as an argument to printf. Some variables in oping and operf were changed to uint32_t and uint64_t to avoid issues.
* tools: Deallocate cbr flows when they time outdimitri staessens2016-11-291-0/+2
|
* tools: Use busy waiting in operfdimitri staessens2016-11-192-4/+24
| | | | | | Using nanosleep in between sending SDUs is not accurate enough when sending thousands of SDUs per second. The --sleep option is added for lowering CPU consumption in low bandwidth tests.
* tools: Fix likely overflow in cbr outputdimitri staessens2016-11-161-3/+3
|
* 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.