summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal
Commit message (Collapse)AuthorAgeFilesLines
...
* ipcpd: Remove FRCT from normal IPCPdimitri staessens2017-05-1015-709/+91
| | | | | | | In order to ensure 100% reliable transfer, the protocol state machine that takes care of retransmission and SDU ordering has to be in the application. Flow allocation in the normal now uses fds. The PDU_type field was deprecated and AE's within the DIF can use reserved fds.
* ipcpd: Don't send deallocation messagesdimitri staessens2017-05-022-39/+0
| | | | | | | The flow resources are Delta-t protocol machines that will time out and free their resources without any required signaling. Flows can be cleaned locally when the application requests it and all FRCT instances have timed out and released their resources.
* ipcpd: Fix sending fa dealloc messagedimitri staessens2017-04-292-18/+31
| | | | | | | The frct instance was previously destroyed before sending the message, resulting in the destination address being 0 and the message getting dropped. Some fixes in the normal for deallocation, but will require further revision once all data transfer protocols are in place.
* ipcpd: Fix some bugs for the normal splitdimitri staessens2017-04-284-39/+46
|
* Merged in sandervrijders/ouroboros/be-frct-api (pull request #497)Sander Vrijders2017-04-2815-680/+647
|\ | | | | | | ipcpd: normal: Split connection establishment
| * ipcpd: normal: Split connection establishmentSander Vrijders2017-04-2815-680/+647
| | | | | | | | | | | | Connection establishment was done at the same time as flow allocation. This splits it more cleanly, and allows to re-use the DT AE for other purposes.
* | ipcpd: Add capability reportingdimitri staessens2017-04-271-12/+17
|/ | | | | | | | The IPCP will now report the DIF name and the hash value to the IRMd as a dif_info struct. This can later be extended to add further capability reporting. Some bugfixes in normal. Fixes #24
* ipcpd: Fix start/stop order in dtdimitri staessens2017-04-261-9/+9
|
* lib: Add call to reserve blocks in rdrbuffdimitri staessens2017-04-264-13/+13
| | | | | | | This adds a call ipcp_sdb_reserve to reserve memory in the rdrbuff without directly writing to a flow. The ipcp_flow_del function was renamed to ipcp_sdb_release. The functions operating on sdbs are moved to their own header.
* ipcpd: normal: Extract flow sets from componentsSander Vrijders2017-04-244-65/+58
| | | | | | The flow sets were still kept within the FA and DT components, when it makes more sense that they are kept within the SDU scheduler component.
* ipcpd: normal: Split flow manager into DT and FASander Vrijders2017-04-2111-884/+972
| | | | | | This splits the flow manager into the Data Transfer AE, which is in charge of routing SDUs, and the Flow Allocator AE, which handles flow allocations.
* Merged in dstaesse/ouroboros/be-complete (pull request #489)dimitri staessens2017-04-204-21/+78
|\ | | | | | | ipcpd: Build complete graph with gam
| * ipcpd: Build complete graph with gamdimitri staessens2017-04-204-21/+78
| | | | | | | | | | The complete policy will now build a complete graph. Currently a simple timer is used to check the member list periodically.
* | ipcpd: normal: Extract SDU scheduling componentSander Vrijders2017-04-194-127/+236
|/ | | | | | This extracts the SDU scheduling component out of the Flow Manager since the functionality was duplicated. For both the N-1 and N+1 flow sets an SDU scheduling component is now created.
* ipcpd: Allow specifying the hash algorithm to usedimitri staessens2017-04-163-18/+18
| | | | Currently CRC32, MD5, and SHA3 (224, 256, 384 and 512 bit) are supported.
* ipcpd: Fix unregistration in normaldimitri staessens2017-04-131-0/+2
|
* lib, ipcpd, irmd: Register hash instead of namedimitri staessens2017-04-1316-185/+96
| | | | | | | | | 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.
* ipcpd: Fix race condition with concurrent allocsdimitri staessens2017-04-061-3/+41
|
* ipcpd: normal: Change assert to NULL checkSander Vrijders2017-04-061-1/+5
| | | | | | An assertion was done instead of NULL check, where the FRCT instance could legitimately be NULL, resulting in the IPCP dying when it shouldn't.
* ipcpd: normal: Add missing else clauseSander Vrijders2017-04-052-10/+7
| | | | | A missing else clause was missing in the fast path, causing the PCI to be shrunk when it should not be. A double free has also been fixed.
* ipcpd: Add lock for allocation requestsSander Vrijders2017-04-051-0/+3
| | | | | This adds a lock to prevent a race condition between flow_req_arr and flow_alloc_resp.
* ipcpd: Revert timeout in fmgrdimitri staessens2017-04-011-6/+1
| | | | | | | Since there are no SDUs on most QoS cubes, the fmgr was always timing out on most QoS cubes, causing considerable delays in most SDUs. The timeout was reset to a very small value (so the bug in glibc 2.25 will cause lockups again).
* ipcpd: Fix CDAP return checks at enrollmentdimitri staessens2017-04-011-4/+4
|
* ipcpd: normal: Fix logsSander Vrijders2017-03-312-11/+6
| | | | | This removes some logs in the graph component and replaces prints of uin64_t variables with an architecture agnostic variant.
* irmd: Keep track of qos in irm_flowdimitri staessens2017-03-311-2/+0
| | | | This fixes the bug in handling multiple concurrent flow allocations.
* Merged in dstaesse/ouroboros/be-new-api (pull request #439)dimitri staessens2017-03-311-13/+2
|\ | | | | | | lib: Revise flow allocation API
| * lib: Revise flow allocation APIdimitri staessens2017-03-311-13/+2
| | | | | | | | | | | | 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.
* | ipcpd: Add missing lock in normal/neighborsdimitri staessens2017-03-301-3/+4
|/
* ipcpd: normal: Fix cleanup of FRCT instanceSander Vrijders2017-03-301-9/+14
| | | | | The FRCT instance was not properly cleaned when the PFF could not find the next hop.
* ipcpd: normal: Fix enrollment bugSander Vrijders2017-03-301-0/+2
| | | | | | This fixes a bug in enrollment where only the first enrollment would happen correctly since the booleans indicating whether boot, members, and DIF name were sent were not initialized back to false.
* ipcpd: normal: Add graph regression testSander Vrijders2017-03-294-2/+276
| | | | | This adds a regression test for the graph component to test the routing table.
* ipcpd: normal: Make graph undirectedSander Vrijders2017-03-293-7/+37
| | | | | | This turns the directed graph into an undirected one. Only one side of the flow creates an FSDB entry. The graph structure creates an edge object for every vertex involved when an edge is updated or removed.
* ipcpd: Correctly read MGMT type PDUs from rdrbuffdimitri staessens2017-03-281-35/+36
| | | | They were not consumed upon reading, causing the rdrbuff to fill up.
* ipcpd: Fix memleaks in fmgrdimitri staessens2017-03-281-0/+4
|
* ipcpd: Fix use-after-free in frctdimitri staessens2017-03-281-1/+2
|
* ipcpd: normal: Fix invalid free of pciSander Vrijders2017-03-281-5/+0
| | | | | The PCI was being freed by frct, but it was stack memory which was created in the fmgr, resulting in an illegal free.
* ipcpd: normal: Call shm_pci_init on fmgr initSander Vrijders2017-03-283-10/+29
| | | | | | The shm PCI was never initialized during flow manager init. This commit will do that, and initialize the pdu length correctly as well, since it was not being written into the RIB, nor read in shm_pci_init.
* ipcpd: normal: Fix wrong update to indexSander Vrijders2017-03-281-2/+2
| | | | | The index j in the function that transforms the list of predecessors to a routing table was incremented at the wrong time.
* ipcpd: normal: Fix locking of PFFSander Vrijders2017-03-282-19/+10
| | | | | | This adds fixes the locking of the PFF which was externalized, but not yet correctly updated within the PFF component itself and within the flow manager.
* ipcpd: normal: Remove graph_add_edge operationSander Vrijders2017-03-283-73/+33
| | | | | | This removes the graph_add_edge operation of the graph component. The routing component now only listens to RO_MODIFY events, and updates the graph accordingly.
* lib, ipcpd: Fix bugs in ro setsSander Vrijders2017-03-282-8/+10
| | | | | This fixes several bugs in the ro sets, rib. And it fixes several bugs in the graph and routing component of the normal IPCP.
* ipcpd: normal: Fix compilation issueSander Vrijders2017-03-281-1/+1
|
* ipcpd: normal: Avoid double freeSander Vrijders2017-03-253-5/+4
| | | | | The flow manager should clean up the buffer after the call to frct create instance has either failed or succeeded.
* ipcpd: Register nb_notifiers before starting gamdimitri staessens2017-03-251-11/+12
|
* ipcpd: Initial synchronisation of the RIBdimitri staessens2017-03-242-24/+264
|
* ipcpd: normal: Fill in forwarding tableSander Vrijders2017-03-243-6/+61
| | | | | | The routing now takes the results of the routing table to fill in the forwarding table, by going through the neighbors and filling in the right fd.
* ipcpd: normal: Fix bad freeSander Vrijders2017-03-241-12/+12
| | | | | This fixes a bad free. The table was only freed if it was NULL, instead of the other way around.
* ipcpd: normal: Fix negative mallocSander Vrijders2017-03-241-0/+11
| | | | | This adds a check to prevent a negative malloc in case the graph structure is empty.
* ipcpd: normal: Fix while loopSander Vrijders2017-03-241-0/+7
| | | | | The next vertex was not taken at the end of the Dijkstra calculation loop.
* ipcpd: normal: Fix segfault in dijkstra calculationSander Vrijders2017-03-241-1/+2
| | | | | | | This fixes a dumb segfault in the dijkstra calculation. If an entry can be removed from the table it was set to NULL. However, if the table is completely empty, the index was -1, resulting in an illegal access into the table.