diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2020-02-18 17:31:19 +0100 |
---|---|---|
committer | Sander Vrijders <sander@ouroboros.rocks> | 2020-02-23 14:37:27 +0100 |
commit | 00a8b8960c027848817050411e4c9be43cb6a427 (patch) | |
tree | d81d4e7a6d4f987a3cbc92bde7159a489ba97779 /src/ipcpd/unicast/pol/graph.c | |
parent | ce2b6900e5373041fee62328e5d1c8a30e692ea2 (diff) | |
download | ouroboros-00a8b8960c027848817050411e4c9be43cb6a427.tar.gz ouroboros-00a8b8960c027848817050411e4c9be43cb6a427.zip |
ipcpd: Fix infinite recursion in LFA
There were bugs introduced in the LFA algorithm refactor causing
infinite recursion and SEGV. The infinite recursion check was added as
an explicit compiler flag to the build.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/unicast/pol/graph.c')
-rw-r--r-- | src/ipcpd/unicast/pol/graph.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ipcpd/unicast/pol/graph.c b/src/ipcpd/unicast/pol/graph.c index a3689ad6..ba2ce553 100644 --- a/src/ipcpd/unicast/pol/graph.c +++ b/src/ipcpd/unicast/pol/graph.c @@ -625,7 +625,7 @@ static int graph_routing_table_lfa(struct graph * graph, int j; int k; - if (graph_routing_table_lfa(graph, s_addr, table, dist)) + if (graph_routing_table_simple(graph, s_addr, table, dist)) goto fail_table; for (j = 0; j < PROG_MAX_FLOWS; j++) { @@ -677,7 +677,7 @@ static int graph_routing_table_lfa(struct graph * graph, continue; if (n_dist[j][v->index] < - *dist[n_index[j]] + *dist[v->index]) + (*dist)[n_index[j]] + (*dist)[v->index]) if (add_lfa_to_table(table, v->addr, addrs[j])) goto fail_add_lfa; |