summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_spf.h
diff options
context:
space:
mode:
Diffstat (limited to 'ospf6d/ospf6_spf.h')
-rw-r--r--ospf6d/ospf6_spf.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/ospf6d/ospf6_spf.h b/ospf6d/ospf6_spf.h
new file mode 100644
index 00000000..de50e94a
--- /dev/null
+++ b/ospf6d/ospf6_spf.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 1999 Yasuhiro Ohara
+ *
+ * This file is part of GNU Zebra.
+ *
+ * GNU Zebra is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * GNU Zebra 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 GNU Zebra; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef OSPF6_SPF_H
+#define OSPF6_SPF_H
+
+#include "prefix.h"
+
+/* Transit Vertex */
+struct ospf6_vertex
+{
+ /* type of this vertex */
+ u_int8_t type;
+
+ /* Vertex Identifier */
+ struct prefix_ls vertex_id;
+
+ /* Identifier String */
+ char string[128];
+
+ /* Associated LSA */
+ struct ospf6_lsa *lsa;
+
+ /* Distance from Root (Cost) */
+ u_int16_t distance;
+
+ /* Depth of this node */
+ u_char depth;
+
+ /* nexthops to this node */
+ struct linklist *nexthop_list;
+
+ /* upper nodes in spf tree */
+ list parent_list;
+
+ /* lower nodes in spf tree */
+ list path_list;
+
+ /* capability bits */
+ u_char capability_bits;
+
+ /* Optional capabilities */
+ u_char opt_capability[3];
+};
+
+#define OSPF6_VERTEX_TYPE_ROUTER 0x01
+#define OSPF6_VERTEX_TYPE_NETWORK 0x02
+
+struct ospf6_spftree
+{
+ /* calculation thread */
+ struct thread *t_spf_calculation;
+
+ /* root of this tree */
+ struct ospf6_vertex *root;
+
+ /* list for search */
+ list list;
+
+ /* statistics */
+ u_int32_t timerun;
+
+ struct timeval runtime_total;
+ struct timeval runtime_min;
+ struct timeval runtime_max;
+
+ struct timeval updated_time;
+ struct timeval interval_total;
+ struct timeval interval_min;
+ struct timeval interval_max;
+};
+
+int ospf6_spf_calculate_route (void *);
+
+void
+ospf6_spf_calculation_schedule (u_int32_t area_id);
+struct ospf6_spftree *ospf6_spftree_create ();
+void
+ospf6_spf_statistics_show (struct vty *vty, struct ospf6_spftree *spf_tree);
+void ospf6_spftree_delete (struct ospf6_spftree *spf_tree);
+
+void ospf6_spf_database_hook (struct ospf6_lsa *old, struct ospf6_lsa *new);
+
+void ospf6_spf_init ();
+
+#endif /* OSPF6_SPF_H */
+