summaryrefslogtreecommitdiff
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
...
* 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.
* | tools: Add operf tooldimitri staessens2016-10-305-0/+628
| | | | | | | | | | | | This tool allows bidirectional bandwidth measurement between a client and server application. The server reflects all traffic back to the client. The traffic can be capped at a certain rate or set to flood.
* | tools: Fix parameters in oping tooldimitri staessens2016-10-301-4/+5
| |
* | tools: Fix memleak in ipcp bootstrapdimitri staessens2016-10-301-1/+3
|/
* lib: Clean up flow if alloc_res failsdimitri staessens2016-10-271-37/+64
| | | | | | | | | If alloc_res fails all resources will be cleaned, except for the assigned flow_descriptor, which must be released with a dealloc call. Calling dealloc after a failed flow_alloc will not try to destroy the already cleaned up flow in the IRMd and IPCPs. Also fixes some memleaks in the oping client.
* 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.
* lib: API for accepting flows with QoSdimitri staessens2016-10-253-3/+6
|
* tools: Fix memory leaks in opingdimitri staessens2016-10-243-17/+26
|
* tools: Fix setting flags in oping tooldimitri staessens2016-10-231-1/+1
|
* 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-2225-44/+43
| | | | | 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-219-2/+37
| | | | | This reduces the risk for some bugs, for instance due to signed/unsigned mismatches and unused variables.
* lib: Demultiplex the fast pathdimitri staessens2016-10-213-17/+33
| | | | | | | | 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: Add a type for struct flow_setdimitri staessens2016-10-093-5/+3
| | | | | | The struct flow_set can now be accessed in applications as flow_set_t. Fixes some malformed lines and homogenizes output when receiving bad SDUs in the oping tool.
* ipcpd: Filter traffic on shim-eth-llcdimitri staessens2016-10-062-1/+3
| | | | Now correctly handles and drops non-ouroboros traffic.
* lib, ipcp: Revise fast path and flow interfacesdimitri staessens2016-10-044-6/+6
| | | | | | | | | | | | 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
* Merged in sandervrijders/ouroboros/be-shm-pci (pull request #247)dimitri staessens2016-09-071-12/+13
|\ | | | | | | ipcpd: normal: Add operations to get and set the PCI
| * 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.
* | lib: dev: Provide a set of fds to flow_selectdimitri staessens2016-09-063-14/+23
| | | | | | | | | | | | | | 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.
* | src: Fix grammar (SDU's -> SDUs)dimitri staessens2016-09-022-5/+5
|/
* 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-2116-113/+437
| | | | | | | | | | | | | | | | | | | | | | 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.
* lib, irmd: Bind AP instances to AP_subsetsdimitri staessens2016-08-103-2/+17
| | | | | | | This call will allow grouping AP instances of a certain AP together which are configured identically. Adds the bind operation to dev and updates the applications to make use of this call. Flow_alloc is now only called with the pid and doesn't send the apn anymore.
* 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.
* tools: echo: Fix unnecessary castdimitri staessens2016-08-081-1/+1
|