Ospf6d merge from Zebra repository with added privs stuff and merged
zclient changes.
diff --git a/ospf6d/ospf6_spf.h b/ospf6d/ospf6_spf.h
index de50e94..1c04afb 100644
--- a/ospf6d/ospf6_spf.h
+++ b/ospf6d/ospf6_spf.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1999 Yasuhiro Ohara
+ * Copyright (C) 2003 Yasuhiro Ohara
  *
  * This file is part of GNU Zebra.
  *
@@ -22,7 +22,16 @@
 #ifndef OSPF6_SPF_H
 #define OSPF6_SPF_H
 
-#include "prefix.h"
+/* Debug option */
+extern unsigned char conf_debug_ospf6_spf;
+#define OSPF6_DEBUG_SPF_SUMMARY   0x01
+#define OSPF6_DEBUG_SPF_DETAIL    0x02
+#define OSPF6_DEBUG_SPF_ON(level) \
+  (conf_debug_ospf6_spf |= (level))
+#define OSPF6_DEBUG_SPF_OFF(level) \
+  (conf_debug_ospf6_spf &= ~(level))
+#define IS_OSPF6_DEBUG_SPF(level) \
+  (conf_debug_ospf6_spf & OSPF6_DEBUG_SPF_ ## level)
 
 /* Transit Vertex */
 struct ospf6_vertex
@@ -31,74 +40,53 @@
   u_int8_t type;
 
   /* Vertex Identifier */
-  struct prefix_ls vertex_id;
+  struct prefix vertex_id;
 
   /* Identifier String */
-  char string[128];
+  char name[128];
+
+  /* Associated Area */
+  struct ospf6_area *area;
 
   /* Associated LSA */
   struct ospf6_lsa *lsa;
 
-  /* Distance from Root (Cost) */
-  u_int16_t distance;
+  /* Distance from Root (i.e. Cost) */
+  u_int32_t cost;
 
-  /* Depth of this node */
-  u_char depth;
+  /* Router hops to this node */
+  u_char hops;
 
   /* nexthops to this node */
-  struct linklist *nexthop_list;
-
-  /* upper nodes in spf tree */
-  list parent_list;
-
-  /* lower nodes in spf tree */
-  list path_list;
+  struct ospf6_nexthop nexthop[OSPF6_MULTI_PATH_LIMIT];
 
   /* capability bits */
-  u_char capability_bits;
+  u_char capability;
 
   /* Optional capabilities */
-  u_char opt_capability[3];
+  u_char options[3];
+
+  /* For tree display */
+  struct ospf6_vertex *parent;
+  list child_list;
 };
 
 #define OSPF6_VERTEX_TYPE_ROUTER  0x01
 #define OSPF6_VERTEX_TYPE_NETWORK 0x02
+#define VERTEX_IS_TYPE(t, v) \
+  ((v)->type == OSPF6_VERTEX_TYPE_ ## t ? 1 : 0)
 
-struct ospf6_spftree
-{
-  /* calculation thread */
-  struct thread *t_spf_calculation;
+void ospf6_spf_table_finish (struct ospf6_route_table *result_table);
+void ospf6_spf_calculation (u_int32_t router_id,
+                            struct ospf6_route_table *result_table,
+                            struct ospf6_area *oa);
+void ospf6_spf_schedule (struct ospf6_area *oa);
 
-  /* root of this tree */
-  struct ospf6_vertex *root;
+void ospf6_spf_display_subtree (struct vty *vty, char *prefix,
+                                int rest, struct ospf6_vertex *v);
 
-  /* 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);
-
+int config_write_ospf6_debug_spf (struct vty *vty);
+void install_element_ospf6_debug_spf ();
 void ospf6_spf_init ();
 
 #endif /* OSPF6_SPF_H */