summaryrefslogtreecommitdiff
path: root/isisd/isis_spf.h
diff options
context:
space:
mode:
authorJosh Bailey <joshb@google.com>2012-03-24 08:35:20 -0700
committerAvneesh Sachdev <avneesh@opensourcerouting.org>2012-04-07 13:54:37 -0700
commit3f045a08812525505e165deea99a79447b44506b (patch)
treea5c944b0584e0e5a14908a2ac9476637e7c1d7e6 /isisd/isis_spf.h
parent6902c69aa30a73ecd70ef8941518b541ca02b878 (diff)
isisd: add Google's changes to IS-IS
Diffstat (limited to 'isisd/isis_spf.h')
-rw-r--r--isisd/isis_spf.h21
1 files changed, 14 insertions, 7 deletions
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