From 3f045a08812525505e165deea99a79447b44506b Mon Sep 17 00:00:00 2001 From: Josh Bailey Date: Sat, 24 Mar 2012 08:35:20 -0700 Subject: isisd: add Google's changes to IS-IS --- isisd/isis_spf.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'isisd/isis_spf.h') diff --git a/isisd/isis_spf.h b/isisd/isis_spf.h index 6bdab2da..f31b5105 100644 --- a/isisd/isis_spf.h +++ b/isisd/isis_spf.h @@ -54,25 +54,32 @@ struct isis_vertex struct prefix prefix; } N; - struct isis_lsp *lsp; u_int32_t d_N; /* d(N) Distance from this IS */ u_int16_t depth; /* The depth in the imaginary tree */ - - struct list *Adj_N; /* {Adj(N)} */ + struct list *Adj_N; /* {Adj(N)} next hop or neighbor list */ + struct list *parents; /* list of parents for ECMP */ + struct list *children; /* list of children used for tree dump */ }; struct isis_spftree { struct thread *t_spf; /* spf threads */ - time_t lastrun; /* for scheduling */ - int pending; /* already scheduled */ struct list *paths; /* the SPT */ struct list *tents; /* TENT */ - - u_int32_t timerun; /* statistics */ + struct isis_area *area; /* back pointer to area */ + int pending; /* already scheduled */ + time_t lastrun; /* for scheduling */ + unsigned int runcount; /* number of runs since uptime */ }; +struct isis_spftree * isis_spftree_new (struct isis_area *area); +void isis_spftree_del (struct isis_spftree *spftree); +void isis_spftree_adj_del (struct isis_spftree *spftree, + struct isis_adjacency *adj); void spftree_area_init (struct isis_area *area); +void spftree_area_del (struct isis_area *area); +void spftree_area_adj_del (struct isis_area *area, + struct isis_adjacency *adj); int isis_spf_schedule (struct isis_area *area, int level); void isis_spf_cmds_init (void); #ifdef HAVE_IPV6 -- cgit v1.2.1