summaryrefslogtreecommitdiff
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
* build: Update copyright to 2019Dimitri Staessens2019-02-0535-35/+35
| | | | | | | Updates the copyright notice in all sources to 2019. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Allow enrollment with destination IPCPDimitri Staessens2019-01-161-11/+52
| | | | | | | | | | | | | | | | | | The irm enroll tool had a semantic to enroll with a layer name, but this is not checked. Now the enroll command will retrieve the correct layer name that the IPCP got from the actual enrollment procedure. The irm enroll now has two string parameters, a dst and a layer, which cannot be both NULL. If only dst is specified, the IPCP will enroll with that name; autobind will bind with the layer name. If only layer is specified, the IPCP will enroll with the layer name, and perform a check that the layer name retrieved from enrollment is indeed the layer name before possibly autobinding. If both dst and layer are specified, the IPCP will enroll with dst and perform a check that the enrollment was in the expected layer. Basically only specifying the layer name is a shorthand for dst == layer. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Rename "normal" to "unicast"Dimitri Staessens2019-01-023-9/+9
| | | | | | | This renames the normal IPCP to unicast in the irm toolkit. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* include: Add a flow_join operation for broadcastDimitri Staessens2018-12-271-4/+4
| | | | | | | | | | | | This adds a new flow_join operaiton for broadcast, which is a much safer solution than overloading destination name semantics. The internal API now also has a different IPCP_FLOW_JOIN operation. The IRMd doesn't need to query broadcasts IPCPs for the name, it can just check if an IPCP with the layer name exists. The broadcast IPCP doesn't need to implement the query proxy call anymore. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Fix server name argument in opingDimitri Staessens2018-11-301-1/+1
| | | | | | | | The --server-name option was mistyped with an underscore in the argument parser. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Add IFF_NO_PI flag to ovpnSander Vrijders2018-10-241-1/+1
| | | | | | | | The flag IFF_NO_PI is needed to make sure that no extra protocol header is added to the payload that is received on the TUN interface. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* ipcpd: Add broadcast IPCPDimitri Staessens2018-10-246-22/+219
| | | | | | | | | | This adds a broadcast IPCP that allows us to easily create multicast applications. The broadcast IPCP accepts flows for "<layer_name>.mc". A tool, obc (Ouroboros broadcast), is added that sends and reads a message to a broadcast layer. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Add ovpn applicationSander Vrijders2018-10-223-0/+351
| | | | | | | | | | This adds the ovpn application which allows to send TCP/IP traffic over Ouroboros. This is done by opening a TUN interface and allocating a flow to another ovpn application so that applications using TCP/IP can be used over Ouroboros as well. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Specify QoS cube for data transfer flows0.13.0Dimitri Staessens2018-10-191-9/+33
| | | | | | | | | The ipcp connect command can now set a specific qos cube for data transfer flows. For management flows, the tool ignores this and defaults to raw until data flows are stable enough. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd, lib, irmd, tools: Change SDU to packetSander Vrijders2018-10-057-26/+28
| | | | | | | | This will change SDU (Service Data Unit) to packet everywhere. SDU is OSI terminology, whereas packet is Ouroboros terminology. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Fix memleaks and buffer overflows in irm toolSander Vrijders2018-09-273-3/+12
| | | | | | | | This fixes some memleaks and potential buffer overflows in the irm tool. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Enhance irm connect and disconnect command0.11.10Sander Vrijders2018-07-232-26/+34
| | | | | | | | | | This enhances the irm connect and irm disconnect command to allow creating connections between IPCPs based on wildcard matching for the component name. In case no component was specified it sets up connections between all possible components. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Add unidirectional test to operfSander Vrijders2018-06-254-88/+208
| | | | | | | | This adds a unidirectional test to operf, which is handy for testing unidirectional streams. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* Merge branch 'testing' into beSander Vrijders2018-06-132-18/+58
|\
| * lib: Use macros for all time utility functions0.11.9Dimitri Staessens2018-06-132-18/+58
| | | | | | | | | | | | | | | | | | This replaces the time utility functions with macros. This avoids using library functions in the tools and also slightly speeds up the implementation. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* | tools: Add newlines to printf statements in opingSander Vrijders2018-06-082-3/+3
| | | | | | | | | | | | | | | | There were some missing newlines in printf statements in oping. This adds them. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* | lib: Add a data qos cubeDimitri Staessens2018-06-081-1/+4
|/ | | | | | | | This adds a data qos cube that is reliable. Reliable qos can be selected by setting the loss parameter of the qosspec to 0. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Add quiet option to opingDimitri Staessens2018-06-062-18/+32
| | | | | | | | | This adds a --quiet -Q option to oping so it will only print the statistics summary. Also fixes a division by 0 if duration is specified with interval 0. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Support qosspecs in opingDimitri Staessens2018-06-052-17/+39
| | | | | | | | The oping tool can now select a qos spec to use. Allowed specs are predefined an chosen using "raw", "best", "video" or "voice". Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Allow specifying duration for opingDimitri Staessens2018-06-051-6/+39
| | | | | | | | | This adds a -d, --duration option to oping. Now all durations can be specified in milliseconds (ms, default), seconds (s), minutes (m), hours (h), or days(d). Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Add out-of-order statistics to opingDimitri Staessens2018-06-052-3/+16
| | | | | | | | | This adds out-of-order statistics to the oping tool. A packet is considered out-of-order if its sequence number is lower than the highest sequence number already received. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Add timestamp option to opingSander Vrijders2018-06-012-6/+22
| | | | | | | | | This adds a timestamp option to oping, similar to the one in regular ping and rinaperf, so that we can more easily correlate time and latency. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Fix bad wildcard match in irm toolSander Vrijders2018-06-011-4/+2
| | | | | | | | The pattern was matched to the string instead of the string to the pattern, which means it only worked if it was a perfect match. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Fix memleaks as reported by cppcheckSander Vrijders2018-05-252-2/+6
| | | | | | | This fixes two memleaks which were reported by cppcheck. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Disable partial reads in opingDimitri Staessens2018-05-072-3/+6
| | | | | | | | | The oping tool was using a 1500 byte buffer, but didn't account for partial reads when sending 1500 byte packets. This disables the partial reads. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Add check for irm ipcp listSander Vrijders2018-04-251-2/+9
| | | | | | | | | This adds a check in the irm ipcp list command to see if irm_list_ipcps returned an error or not. Before it was only checking if there were zero IPCPs in the system. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Fix type check when bootstrapping ipcpsDimitri Staessens2018-04-201-14/+16
| | | | | | | | The type check failed incorrectly if the type was specified because the specified type was not set. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Fix help information for irm ipcpSander Vrijders2018-04-172-3/+8
| | | | | | | | The new command 'irm ipcp list' was not being printed upon printing the usage of 'irm ipcp'. It also fixes an unchecked return value. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* tools: Fix hash algorithm in ipcp_bootstrap0.11.2Dimitri Staessens2018-04-051-1/+1
| | | | | | | A bad check caused failure to set the hash algorithm for IPCPs. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Increase read buffer in ocbr serverDimitri Staessens2018-03-253-5/+16
| | | | | | | | | | | | The ocbr server had a 1500 byte read buffer, which caused it to perform partial reads on larger SDUs, slowing it down considerably when sendin large packets. The buffer has been increased to 512KB, partial reads disabled, and the client will give an error when larger frames are sent. It will also warn if the size overflows (avoiding a SEGV). Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* irmd: Fix memleak when failing to list ipcpsDimitri Staessens2018-03-221-1/+1
| | | | | | | | | The list_ipcps call had a memleak in the failure case. Also fixes a compiler warning for a possible uninitialized variable and renumbers the gpb ipcpd message fields. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* lib: Simplify reg/unreg APIDimitri Staessens2018-03-2216-218/+662
| | | | | | | | | | | | | | | | | | | | The reg/unreg API is simplified to registering and unregistering a single name with a single IPCP. The functionality associated with registering names was moved from the IRMd to the irm tool. The function to list IPCPs was simplified to return all IPCPs in the system with their basic properties needed for management. The above changes led to some needed changes in the irm tool and the management functions that were depending on the previous behaviour of list_ipcps. Command line functionality to list IPCPs in the system is also added to the irm tool. Some older code was refactored. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Fix help information for oechoDimitri Staessens2018-03-191-4/+4
| | | | | | | | The oecho tool still used its old "echo-app" name in the usage() output. The destination name is also changed to oecho. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Use non-blocking read in serversDimitri Staessens2018-03-162-2/+2
| | | | | | | | | | | The oping and ocbr servers were using non-blocking read/writes. This caused writes to fail on high-performance tests if the buffer got full, instead of waiting for a slot in the buffer. The write failure caused the server to quit. This fixes the tools by setting the I/O to blocking write and non-blocking read. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Add validity checks for eth-dixDimitri Staessens2018-03-121-1/+7
| | | | | | | | This will check if the Ethertype value is a valid Ethertype in the irm tool and the eth-dix IPCPd. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Add IPCP over DIX EthernetDimitri Staessens2018-03-101-8/+32
| | | | | | | | | | | | | | | | | | This adds an IPC Process that uses DIX Ethernet with an Ethertype that is configurable at bootstrap. This allows parallel DIX layers over the same Ethernet network with different Ethertypes (and one LLC layer). It allows jumbo frames in the future, and should avoid the problems we have with some routers not handling LLC traffic very well. The destination endpoint ID is sent as a 16 bit integer, so the maximum payload is 1498 bytes in standard Ethernet, and 8998 bytes when Jumbo frames are used. The implementation is very similar to the Ethernet LLC IPCP, so it is implemented using preprocessor macros in the single source instead of duplicating code. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* lib: Use PTHREAD_COND_CLOCK for blocking reads0.10.6Dimitri Staessens2018-03-101-2/+5
| | | | | | | | | | | The rbuff uses the PTHREAD_COND_CLOCK for its condition variables, but the flow_read was passing a time it got from the CLOCK_REALTIME_COARSE clock. This causes the blocking reads not to timeout correctly. The oping was updated to detect server timeouts and finish gracefully. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Don't cancel reader thread in oping0.10.5Dimitri Staessens2018-03-051-2/+0
| | | | | | | | The reader thread was cancelled as soon as the writer was finished, which resulted in missed responses and misreported packet loss. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* build: Allow out-of-tree build of toolsDimitri Staessens2018-02-1417-57/+150
| | | | | | | | | | This removes the dependencies for the tools on some ouroboros internal headers (endian.h and time_utils.h) so they can be built out-of-tree. The echo-app tool has been renamed oecho and the cbr tool has been renamed ocbr. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Revise Data Transfer component0.10.0Dimitri Staessens2018-02-136-55/+57
| | | | | | | | | | | This makes the TTL non-optional and allows the maximum (initial) value of the TTL to be specified at bootstrap (the default is set to 60). The fd in the DT PCI is now called EID (Endpoint ID). The names "dif" and "ae" have been replaced by "layer" and "component" respectively in all sources. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* build: Use GNUInstallDirs instead of hardcoded values0.9.9Sander Vrijders2018-02-065-5/+5
| | | | | | | | 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 <[email protected]>
* tools: Fix check for return value in irm tool0.9.7Sander Vrijders2018-02-031-1/+1
| | | | | | | | A check was done in the irm tool for the pid of a newly created IPCP, but it didn't catch all failures, this fixes that. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* include, src: Update copyright to 2018Dimitri Staessens2018-01-0931-31/+31
| | | | | | | Happy New Year, Ouroboros. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Use the term "layer" and deprecate "shim"Dimitri Staessens2017-12-195-41/+41
| | | | | | | | | | | | | | This changes the terminology to use layer instead of DIF and deprecate the word "shim" for the IPCPs that attach to Ethernet LLC and UDP .The terminology has not yet been changed in the variable names etc. This reflects the design choices in Ouroboros to make IPCPs pure resource allocators instead of also providing an "IPC service". The Ouroboros IPCPs that attach to Ethernet and UDP implement the allocator and are thus not really shims. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Integrate raptor into ouroboros 0.8Dimitri Staessens2017-12-152-6/+17
| | | | | | | | | | | The raptor code is refactored to completely remove reduntant code relating to addresses. The dependency on the google protocol buffers is removed. The build system will only build raptor if the relevant kernel module is found on the system. The irm tool and the relevant documentation are updated. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Make hash algorithm configurableSander Vrijders2017-12-041-3/+11
| | | | | | | | | | This makes the hashing algorithm configurable once more for the local and the shim-eth-llc, since their scope is so small that it is up to the network administrator to select a correct algorithm for the whole network. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* lib, tools: Rename application process and instanceDimitri Staessens2017-12-0219-150/+165
| | | | | | | | | | | This refactors ouroboros to use "program" instead of "application process" and "process" instead of "application process instance" to align with current naming in current Operating Systems courses instead of the ISO nomenclature adopted by RINA. This change permeates through the entire implementation. Also contains some minor other refactors. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Don't bind from the IPCPDimitri Staessens2017-11-292-16/+64
| | | | | | | | | | The binding of the normal IPCP to its name is moved from the source code to the irm tool introducing the "autobind" option for the bootstrap and enroll commands. With this option, the IPCP will be bound to the IPCP name and the DIF name automatically. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Fix SEGV in oping clientDimitri Staessens2017-11-221-4/+8
| | | | | | | | | | | The oping client tried to cancel non-created pthreads if it was killed during flow allocation, which caused a SEGV. The threads are now stopped using a variable. Fixes bug #2. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* tools: Send time in oping packetsDimitri Staessens2017-11-192-38/+23
| | | | | | | | The oping tool now stores the time it sent the packet inside the SDU, simplifying the implementation. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>