summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal/routing.c
Commit message (Collapse)AuthorAgeFilesLines
* ipcpd: normal: Add graph regression testSander Vrijders2017-03-291-1/+1
| | | | | This adds a regression test for the graph component to test the routing table.
* ipcpd: normal: Make graph undirectedSander Vrijders2017-03-291-0/+4
| | | | | | 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: normal: Remove graph_add_edge operationSander Vrijders2017-03-281-12/+3
| | | | | | 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-281-2/+2
| | | | | 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: Fill in forwarding tableSander Vrijders2017-03-241-6/+36
| | | | | | 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: Add routing table calculationSander Vrijders2017-03-231-6/+36
| | | | | | 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: 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-211-2/+3
| | | | These solve several bugfixes in the normal.
* ipcpd: normal: Split fmgr init into init and startSander Vrijders2017-03-211-0/+4
| | | | | | 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.
* ipcpd: normal: routing: Listen to RIB eventsSander Vrijders2017-03-201-33/+151
| | | | | | 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-141-37/+20
| | | | | | 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: normal: Add Flow State Objects to RIBSander Vrijders2017-03-131-41/+106
| | | | | | | 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.
* Change email addresses to ugent.beSander Vrijders2017-03-031-2/+2
| | | | | | | 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.
* ipcpd: normal: Refactor application entities and add neighbors structSander Vrijders2017-03-031-0/+132
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.