/* * 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 */