summaryrefslogtreecommitdiffstats
path: root/isisd/isis_spf.h
diff options
context:
space:
mode:
Diffstat (limited to 'isisd/isis_spf.h')
-rw-r--r--isisd/isis_spf.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/isisd/isis_spf.h b/isisd/isis_spf.h
new file mode 100644
index 000000000..59e4b6b51
--- /dev/null
+++ b/isisd/isis_spf.h
@@ -0,0 +1,85 @@
+/*
+ * IS-IS Rout(e)ing protocol - isis_spf.h
+ * IS-IS Shortest Path First algorithm
+ *
+ * Copyright (C) 2001,2002 Sampo Saaristo
+ * Tampere University of Technology
+ * Institute of Communications Engineering
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public Licenseas published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _ZEBRA_ISIS_SPF_H
+#define _ZEBRA_ISIS_SPF_H
+
+enum vertextype {
+ VTYPE_PSEUDO_IS = 1,
+ VTYPE_NONPSEUDO_IS,
+ VTYPE_ES,
+ VTYPE_IPREACH_INTERNAL,
+ VTYPE_IPREACH_EXTERNAL
+#ifdef HAVE_IPV6
+ ,
+ VTYPE_IP6REACH_INTERNAL,
+ VTYPE_IP6REACH_EXTERNAL
+#endif /* HAVE_IPV6 */
+};
+
+/*
+ * Triple <N, d(N), {Adj(N)}>
+ */
+struct isis_vertex
+{
+ enum vertextype type;
+
+ union {
+ u_char id [ISIS_SYS_ID_LEN + 1];
+ 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 isis_spftree
+{
+ struct thread *t_spf_periodic; /* periodic 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 */
+};
+
+void spftree_area_init (struct isis_area *area);
+int isis_spf_schedule (struct isis_area *area, int level);
+void isis_spf_cmds_init (void);
+#ifdef HAVE_IPV6
+int isis_spf_schedule6 (struct isis_area *area, int level);
+#endif
+#endif /* _ZEBRA_ISIS_SPF_H */
+
+
+
+
+
+
+
+