diff options
Diffstat (limited to 'src/ipcpd')
| -rw-r--r-- | src/ipcpd/normal/pol/alternate_pff.c | 1 | ||||
| -rw-r--r-- | src/ipcpd/normal/pol/graph.c | 14 | 
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; | 
