summaryrefslogtreecommitdiff
path: root/src/ipcpd
Commit message (Collapse)AuthorAgeFilesLines
...
* 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-295-8/+285
| | | | | 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.
* Merged in dstaesse/ouroboros/be-fmgr (pull request #417)dimitri staessens2017-03-231-1/+5
|\ | | | | | | ipcpd: Increase update timeout in fmgr
| * ipcpd: Increase update timeout in fmgrdimitri staessens2017-03-231-1/+5
| | | | | | | | This works around a possible bug in glibc 2.25.
* | ipcpd: normal: Add routing table calculationSander Vrijders2017-03-233-28/+274
| | | | | | | | | | | | This adds routing table calculation to the graph component. The routing instances can then periodically ask the graph component for the routing table, and update their PFFs accordingly.
* | ipcpd: normal: Add memset of conn_infoSander Vrijders2017-03-222-0/+4
|/ | | | | This initializes conn_info in the ribmgr and fmgr before it is passed to cacep.
* ipcpd: Create cdap instance at enroll_initdimitri staessens2017-03-221-14/+18
|
* ipcpd: Fix cleanup handler in connmgrdimitri staessens2017-03-221-2/+4
|
* ipcpd: normal: Fix memory leaksSander Vrijders2017-03-223-0/+6
| | | | This fixes some memleaks as reported by valgrind.
* ipcpd: normal: Initialize qosspecSander Vrijders2017-03-221-0/+2
| | | | | The QoS spec was not being initialized before being added to the graph structure, resulting in an error when compiled with clang.
* ipcpd: normal: Several bugfixesSander Vrijders2017-03-214-19/+20
| | | | These solve several bugfixes in the normal.
* Merge branch 'testing' into beSander Vrijders2017-03-211-1/+7
|\
| * ipcpd: local: Handle failed flow allocationSander Vrijders2017-03-211-1/+7
| | | | | | | | | | | | When the flow_req_arr returned a negative error, it was not handled correctly in the local IPCP, and an access was made into a table with a negative integer. This handles it correctly.
* | Merged in sandervrijders/ouroboros/be-fmgr (pull request #406)Sander Vrijders2017-03-215-52/+78
|\ \ | | | | | | | | | ipcpd: normal: Split fmgr init into init and start
| * | ipcpd: normal: Split fmgr init into init and startSander Vrijders2017-03-215-52/+78
| | | | | | | | | | | | | | | | | | This split the initialization of the flow manager into an init part and a start part. This avoids the usage of data structures that have not been properly initialized yet.
* | | Merge branch 'be' of bitbucket.org:ouroboros-rina/ouroboros into beSander Vrijders2017-03-2158-1180/+2174
|\ \ \
| * | | ipcpd: Fill qosspec in complete gam policydimitri staessens2017-03-211-0/+3
| |/ / | | | | | | | | | | | | The temporary cube parameter must be initialized if a qosspec is passed to avoid uninitialized values for the qoscube in the prototype.
| * | Merged in dstaesse/ouroboros/be-connmgr (pull request #403)dimitri staessens2017-03-203-31/+39
| |\ \ | | | | | | | | | | | | ipcpd: Fix cleanup of connmgr
| | * | ipcpd: Create CDAP instance before connectingdimitri staessens2017-03-201-11/+12
| | | | | | | | | | | | | | | | | | | | This lessens the likelyhood that the CDAP SDU thread is not yet active when a new connection starts sending CDAP messages.
| | * | ipcpd: Fix cleanup of connmgrdimitri staessens2017-03-202-20/+27
| | | | | | | | | | | | | | | | Fixed trying to double lock and cleanup order in main.
| * | | Merged in sandervrijders/ouroboros/be-graph (pull request #402)Sander Vrijders2017-03-206-64/+539
| |\ \ \ | | |/ / | |/| | | | | | Be graph
| | * | ipcpd: normal: routing: Listen to RIB eventsSander Vrijders2017-03-203-34/+182
| | | | | | | | | | | | | | | | | | | | | | | | This lets the routing component listen to RIB events. It listens to /fsdb which is populated with FSOs. The graph that is kept within the routing component is updated depending on the event that was received.
| | * | ipcpd: normal: Add graph structureSander Vrijders2017-03-145-38/+365
| | | | | | | | | | | | | | | | | | | | | | | | This adds a graph structure which will be updated by routing when it is notified about a new RIB event. The routing can then use this graph as input for calculating the shortest path to a destination.
| * | | ipcpd: Fix disregarding qs in connmgrdimitri staessens2017-03-141-2/+5
| | | |
| * | | lib: Fix CDAP with multiple fdsdimitri staessens2017-03-141-10/+1
| |/ /
| * | ipcpd: normal: Add Flow State Objects to RIBSander Vrijders2017-03-133-48/+132
| | | | | | | | | | | | | | | | | | | | | This makes the routing component create a Flow State Database (FSDB). An FSDB contains Flow State Objects (FSOs). An FSO is created when a neighbor is added, it is deleted when a neighbor is removed and its QoS is updated when a neighbor's QoS changes.
| * | lib: Manage multiple flows with a single CDAP instancedimitri staessens2017-03-031-11/+37
| | | | | | | | | | | | | | | | | | | | | | | | You can now add multiple flows to a CDAP instance. This will simplify sending messages to different peers (e.g. for syncing the RIB). A request will now return an array of keys terminated by CDAP_KEY_INVALID. Removes the enum from the CDAP proto file to just take the opcode as an integer.
| * | Change email addresses to ugent.beSander Vrijders2017-03-0344-70/+89
| | | | | | | | | | | | | | | | | | | | | 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-036-35/+35
| | | | | | | | | | | | The CMakeLists files are now properly indented.
| * | ipcpd: normal: Deprecate CDAP flowSander Vrijders2017-03-033-233/+0
| | | | | | | | | | | | This removes the CDAP flow class, which is no longer needed.
| * | ipcpd: normal: Refactor application entities and add neighbors structSander Vrijders2017-03-0324-725/+1065
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This refactors the different Application Entities of the normal IPCP. They all listen to and use the connection manager to establish new application connections. This commit also adds a neighbors struct to the normal IPCP. It contains neighbor structs that contain application connection. Notifiers can be registered in case a neighbor changes (added, removed, QoS changed). The flow manager has an instance of this neighbors struct and listens to these events to update its flow set. The routing component also listens to these events so that it can update the FSDB if needed. The flow manager now also creates the PFF instances and the routing instances per QoS cube. The RIB manager also uses this an instance of the neighbors struct and listens to neighbor events as well.