1/* 2 * Copyright (C) 2003 Yasuhiro Ohara 3 * 4 * This file is part of GNU Zebra. 5 * 6 * GNU Zebra is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the 8 * Free Software Foundation; either version 2, or (at your option) any 9 * later version. 10 * 11 * GNU Zebra is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with GNU Zebra; see the file COPYING. If not, write to the 18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 * Boston, MA 02111-1307, USA. 20 */ 21 22#ifndef OSPF6_TOP_H 23#define OSPF6_TOP_H 24 25#include "routemap.h" 26 27/* OSPFv3 top level data structure */ 28struct ospf6 29{ 30 /* my router id */ 31 u_int32_t router_id; 32 33 /* static router id */ 34 u_int32_t router_id_static; 35 36 /* start time */ 37 struct timeval starttime; 38 39 /* list of areas */ 40 struct list *area_list; 41 struct ospf6_area *backbone; 42 43 /* AS scope link state database */ 44 struct ospf6_lsdb *lsdb; 45 struct ospf6_lsdb *lsdb_self; 46 47 struct ospf6_route_table *route_table; 48 struct ospf6_route_table *brouter_table; 49 50 struct ospf6_route_table *external_table; 51 struct route_table *external_id_table; 52 u_int32_t external_id; 53 54 /* redistribute route-map */ 55 struct 56 { 57 char *name; 58 struct route_map *map; 59 } rmap[ZEBRA_ROUTE_MAX]; 60 61 u_char flag; 62 63 /* Configured flags */ 64 u_char config_flags; 65#define OSPF6_LOG_ADJACENCY_CHANGES (1 << 0) 66#define OSPF6_LOG_ADJACENCY_DETAIL (1 << 1) 67 68 /* SPF parameters */ 69 unsigned int spf_delay; /* SPF delay time. */ 70 unsigned int spf_holdtime; /* SPF hold time. */ 71 unsigned int spf_max_holdtime; /* SPF maximum-holdtime */ 72 unsigned int spf_hold_multiplier; /* Adaptive multiplier for hold time */ 73 unsigned int spf_reason; /* reason bits while scheduling SPF */ 74 75 struct timeval ts_spf; /* SPF calculation time stamp. */ 76 struct timeval ts_spf_duration; /* Execution time of last SPF */ 77 unsigned int last_spf_reason; /* Last SPF reason */ 78 79 /* Threads */ 80 struct thread *t_spf_calc; /* SPF calculation timer. */ 81 struct thread *t_ase_calc; /* ASE calculation timer. */ 82 struct thread *maxage_remover; 83 84 u_int32_t ref_bandwidth; 85}; 86 87#define OSPF6_DISABLED 0x01 88#define OSPF6_STUB_ROUTER 0x02 89 90/* global pointer for OSPF top data structure */ 91extern struct ospf6 *ospf6; 92 93/* prototypes */ 94extern void ospf6_top_init (void); 95extern void ospf6_delete (struct ospf6 *o); 96 97extern void ospf6_maxage_remove (struct ospf6 *o); 98 99#endif /* OSPF6_TOP_H */ 100 101 102