summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/normal/pol/alternate_pff.c1
-rw-r--r--src/ipcpd/normal/pol/graph.c14
2 files changed, 8 insertions, 7 deletions
diff --git a/src/ipcpd/normal/pol/alternate_pff.c b/src/ipcpd/normal/pol/alternate_pff.c
index cb438c5f..3cb99d9c 100644
--- a/src/ipcpd/normal/pol/alternate_pff.c
+++ b/src/ipcpd/normal/pol/alternate_pff.c
@@ -234,6 +234,7 @@ void alternate_pff_destroy(struct pff_i * pff_i)
htable_destroy(pff_i->table);
del_nhops_down(pff_i);
+ del_addrs(pff_i);
pthread_rwlock_destroy(&pff_i->lock);
free(pff_i);
}
diff --git a/src/ipcpd/normal/pol/graph.c b/src/ipcpd/normal/pol/graph.c
index 41a27207..007e1047 100644
--- a/src/ipcpd/normal/pol/graph.c
+++ b/src/ipcpd/normal/pol/graph.c
@@ -612,9 +612,9 @@ int graph_routing_table_lfa(struct graph * graph,
pthread_mutex_lock(&graph->lock);
for (j = 0; j < PROG_MAX_FLOWS; j++) {
- n_dist[i] = NULL;
- n_index[i] = -1;
- addrs[i] = -1;
+ n_dist[j] = NULL;
+ n_index[j] = -1;
+ addrs[j] = -1;
}
/* Get the normal next hops routing table. */
@@ -660,17 +660,17 @@ int graph_routing_table_lfa(struct graph * graph,
continue;
if (n_dist[j][v->index] <
- s_dist[n_index[j]] + s_dist[v->index]) {
+ s_dist[n_index[j]] + s_dist[v->index])
if (add_lfa_to_table(table, v->addr, addrs[j]))
goto fail_add_lfa;
- }
-
- free(n_dist[j]);
}
}
pthread_mutex_unlock(&graph->lock);
+ for (j = 0; j < i; j++)
+ free(n_dist[j]);
+
free(s_dist);
return 0;