summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* lib: Revise du buff API towards a memory allocatorDimitri Staessens2018-10-264-55/+41
| | | | | | | | | This changes the API to the rdrbuff to treat it as a pool memory allocator. The head and tailspace to allocate in a buffer is now set system-wide instead of being passed as a parameter. 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-2422-25/+2014
| | | | | | | | | | 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-1911-35/+77
| | | | | | | | | 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: Check flow id instead of assertDimitri Staessens2018-10-191-1/+4
| | | | | | | | | This will check if the flow id is valid instead of asserting. It avoids assertion failures in the IPCP if an application crashes and the IRMd deallocates the flow while the IPCP still has pending writes. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd: Check if there are entries to add to pffDimitri Staessens2018-10-191-3/+3
| | | | | | | | The pff didn't check if there were actually entries in the database, causing an assertion failure in some rare cases. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* ipcpd, irmd: Handle signal in main threadDimitri Staessens2018-10-186-140/+95
| | | | | | | | | The signals are now handled in the main thread instead of an asynchronous signal handler. The acceptloop is now correctly cancelled and the associated timeouts are removed. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* lib: Remove CRC flag from FRCTDimitri Staessens2018-10-152-4/+3
| | | | | | | | The integrity check mechanism was split from FRCT, this flag is not needed anymore. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* Merge branch 'testing' into beSander Vrijders2018-10-129-11/+25
|\
| * ipcpd: Send link state message before lsdb update0.12.3Dimitri Staessens2018-10-122-6/+5
| | | | | | | | | | | | | | | | | | | | When a new link is added, the link state update will be sent before the database update, so the network is a little bit more quickly aware. This improves odds of the DHT successfully enrolling at its first attempt, reducing bootstrap time of a network. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Configure DHT slack timer at build timeDimitri Staessens2018-10-123-1/+9
| | | | | | | | | | | | | | This allows configuration of the DHT slack timer at build time. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * lib: Set hash algorithm correctlyDimitri Staessens2018-10-121-1/+3
| | | | | | | | | | | | | | | | | | There was a bug where the hash selection for the local, raptor and ethernet IPCPs was not passed correctly, so they were using a wrong hash. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Make Qdisc bypass configurableSander Vrijders2018-10-123-0/+7
| | | | | | | | | | | | | | | | This will make bypassing the qdisc configurable, as it might be handy for getting fast data rates but is generally needed. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * irmd: Don't warn if server leavesDimitri Staessens2018-10-121-3/+1
| | | | | | | | | | | | | | | | | | The irmd would log a warning when a server application quits during an accept call, but this is just a normal event. This removes the warning log. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* | Merge branch 'testing' into beDimitri Staessens2018-10-113-3/+10
|\|
| * lib: Add cleanup function in notifierSander Vrijders2018-10-111-1/+4
| | | | | | | | | | | | | | | | This adds a cleanup function in the notifier in case it gets cancelled, which is a possibility in some callbacks. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * ipcpd: Call send_lsm under read lockSander Vrijders2018-10-111-0/+2
| | | | | | | | | | | | | | | | send_lsm was being called from the event handler as well as from lsupdate. The first one was not being locked properly. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * ipcpd: Take correct lock when updating statsSander Vrijders2018-10-111-2/+4
| | | | | | | | | | | | | | | | The lock of the wrong fd was taken when updating the stats in the DT component. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* | Merge branch 'testing' into beSander Vrijders2018-10-1110-171/+257
|\|
| * ipcpd: Speed up enrolment of DHTDimitri Staessens2018-10-112-62/+68
| | | | | | | | | | | | | | | | | | | | | | The link-state algorithm will now quickly recalculate for link additions (but not for removals, for stability). Upon notification of a new link, the DHT will wait for a brief moment to enroll. This reduces enrolment for large networks by some orders of magnitude. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Decouple flow allocator from dt threadDimitri Staessens2018-10-111-86/+176
| | | | | | | | | | | | | | | | The flow allocator passed a blocking callback to the forwarding component, which blocks packet processing. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * lib: Disable CRC by defaultDimitri Staessens2018-10-111-1/+1
| | | | | | | | | | | | | | | | This sets the CRC check to be disabled by default, since it greatly hampers performance and is almost never needed. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * lib: Initialize libgcrypt before useDimitri Staessens2018-10-111-1/+4
| | | | | | | | | | | | | | | | This initializes libgcrypt before use in the library. This fixes the "called in non-operational state" error when CRC checking is enabled. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Remove stale QoS cubesDimitri Staessens2018-10-104-20/+2
| | | | | | | | | | | | | | | | There were QoS cubes defined for raw and data flows, which are now run on the best effort cube. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Fix SEGV in eth IPCPDimitri Staessens2018-10-101-1/+6
| | | | | | | | | | | | | | | | The memcpy of the device name was copying a fixed set of bytes (IFNAMSIZ), but the string conf->dev is usually shorter. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* | lib: Some more fixes in retransmissionDimitri Staessens2018-10-101-6/+6
| | | | | | | | | | | | | | | | | | The queued packets were not correctly read. The rcv_cr->seqno now indicates the next packet the receiver application expects. A lot more stable now, but still some further issues to be fixed. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* | Merge branch 'testing' into beSander Vrijders2018-10-092-16/+5
|\|
| * lib: Fix padding in rdrbuff0.12.2Dimitri Staessens2018-10-092-16/+5
| | | | | | | | | | | | | | | | Multiblock writes that require wrapping will now correctly pad unuseable space at the end of the rdrbuff. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* | lib: Fix initial automated repeat-requestDimitri Staessens2018-10-092-10/+15
| | | | | | | | | | | | | | | | | | This fixes rudimentary automated repeat-request ARQ to correctly configure the both connection records and use the receiver seqno. The rto variable is moved out of the connection record. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
* | Merge branch 'testing' into beDimitri Staessens2018-10-094-96/+60
|\|
| * lib: Define QoS specs inside header file0.12.1Sander Vrijders2018-10-094-96/+60
| | | | | | | | | | | | | | | | | | The QoS specs were defined in the source file instead of in the header file, which resulted in uninitialized structs being used, which gave rise to weird behavior in the library. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
* | Merge branch 'testing' into beDimitri Staessens2018-10-0687-1321/+1492
|\|
| * version: Ouroboros 0.120.12.0Dimitri Staessens2018-10-061-2/+2
| | | | | | | | Signed-off-by: Dimitri Staessens <[email protected]>
| * lib: Keep track of highest delivered seqnoDimitri Staessens2018-10-061-14/+13
| | | | | | | | | | | | | | | | | | | | | | | | The FRCT kept only a left window edge in the receiver connection window, however, it needs to keep track of the left window edge (highest ACK'd sequence number) and the highest delivered sequence number, so it can delay ACKs that cannot be piggybacked. TCP recommends at most 500 ms for delayed ACKs (probably good to keep it near half of RTO). Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * include: Fix QoS include filesDimitri Staessens2018-10-0610-8/+5
| | | | | | | | | | | | | | A lot of files were unnecessarily including qoscube.h. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * lib: Split error checking from FRCTDimitri Staessens2018-10-055-45/+58
| | | | | | | | | | | | | | | | This splits off the CRC from FRCT so it can be set independently. Ouroboros now allows raw flows with error checking. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * doc: Fix fccntl man pageDimitri Staessens2018-10-052-9/+6
| | | | | | | | | | | | | | Patch for previous commit, which was broken. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Remove dt_const header from normal IPCPSander Vrijders2018-10-051-39/+0
| | | | | | | | | | | | | | | | The dt_const header is a remnant from an earlier version of the DT PCI. It can be safely removed. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * lib: Rename port_id to flow_idDimitri Staessens2018-10-0518-191/+191
| | | | | | | | | | | | | | Renames port_id to flow_id according to updated nomenclature. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * doc: Update man page for fccntlDimitri Staessens2018-10-052-12/+7
| | | | | | | | | | | | | | The FLOWSFLAGS command was recently obsoleted with the removal of online reconfiguration of FRCT. Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Shorten packet_scheduler to pschedSander Vrijders2018-10-055-63/+63
| | | | | | | | | | | | | | | | This shortens packet_scheduler to psched, which results in more readable code. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * ipcpd, lib, irmd, tools: Change SDU to packetSander Vrijders2018-10-0528-243/+247
| | | | | | | | | | | | | | | | 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]>
| * ipcpd: Replace SAP with EID in raptor IPCPSander Vrijders2018-10-051-74/+74
| | | | | | | | | | | | | | | | This replaces Service Access Point with Endpoint Identifier in the raptor IPCP, since it better fits the Ouroboros terminology. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * lib: Pass qosspec at flow allocationDimitri Staessens2018-10-0528-249/+388
| | | | | | | | | | | | | | | | | | | | | | | | The flow allocator now passes the full qos specification to the endpoint, instead of just a cube. This is a more flexible architecture, as it makes QoS cubes internal to the layers. Adds endianness transforms for the flow allocator protocol in the normal IPCP. Signed-off-by: Dimitri Staessens <[email protected]> Signed-off-by: Sander Vrijders <[email protected]>
| * ipcpd: Use non-blocking socket in Ethernet IPCPSander Vrijders2018-10-031-3/+17
| | | | | | | | | | | | | | | | | | | | Since the Ethernet IPCP now has multiple reader threads it was possible that both exit the select call, which caused one of the two threads to block on the recv call. This makes the socket non-blocking so that the recv call simply fails. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * build: Prioritize raw socket API in buildSander Vrijders2018-10-031-15/+18
| | | | | | | | | | | | | | | | This will change the build to exclusively select one raw socket API in case multiple are present in the sytem, which will simplify the code. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * ipcpd: Bypass Qdisc in Ethernet IPCPSander Vrijders2018-10-031-0/+8
| | | | | | | | | | | | | | | | Since Linux kernel 3.14 there is the option to bypass the kernel Qdisc. This will speed up the Ethernet IPCP. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * ipcpd: Fix build for netmap enabled Ethernet IPCPSander Vrijders2018-10-032-7/+9
| | | | | | | | | | | | | | | | | | There were some compilation issues introduced by adding the interface monitor to the Ethernet IPCP. Furthermore it was not possible to select between raw sockets or netmap if both were available. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>
| * ipcpd: Fix bad lock in Ethernet IPCPSander Vrijders2018-10-031-1/+1
| | | | | | | | | | | | | | | | An unlock was called twice instead of a lock/unlock sequence, causing a data race. Signed-off-by: Sander Vrijders <[email protected]> Signed-off-by: Dimitri Staessens <[email protected]>