]>
Commit | Line | Data |
---|---|---|
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 along | |
17 | * with this program; see the file COPYING; if not, write to the Free Software | |
18 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
19 | */ | |
20 | ||
21 | #ifndef OSPF6_TOP_H | |
22 | #define OSPF6_TOP_H | |
23 | ||
24 | #include "qobj.h" | |
25 | #include "routemap.h" | |
26 | ||
27 | struct ospf6_master { | |
28 | ||
29 | uint32_t zebra_router_id; | |
30 | }; | |
31 | ||
32 | /* OSPFv3 top level data structure */ | |
33 | struct ospf6 { | |
34 | /* my router id */ | |
35 | uint32_t router_id; | |
36 | ||
37 | /* static router id */ | |
38 | uint32_t router_id_static; | |
39 | ||
40 | struct in_addr router_id_zebra; | |
41 | ||
42 | /* start time */ | |
43 | struct timeval starttime; | |
44 | ||
45 | /* list of areas */ | |
46 | struct list *area_list; | |
47 | struct ospf6_area *backbone; | |
48 | ||
49 | /* AS scope link state database */ | |
50 | struct ospf6_lsdb *lsdb; | |
51 | struct ospf6_lsdb *lsdb_self; | |
52 | ||
53 | struct ospf6_route_table *route_table; | |
54 | struct ospf6_route_table *brouter_table; | |
55 | ||
56 | struct ospf6_route_table *external_table; | |
57 | struct route_table *external_id_table; | |
58 | uint32_t external_id; | |
59 | ||
60 | /* redistribute route-map */ | |
61 | struct { | |
62 | char *name; | |
63 | struct route_map *map; | |
64 | } rmap[ZEBRA_ROUTE_MAX]; | |
65 | ||
66 | uint8_t flag; | |
67 | ||
68 | /* Configured flags */ | |
69 | uint8_t config_flags; | |
70 | #define OSPF6_LOG_ADJACENCY_CHANGES (1 << 0) | |
71 | #define OSPF6_LOG_ADJACENCY_DETAIL (1 << 1) | |
72 | ||
73 | /* LSA timer parameters */ | |
74 | unsigned int lsa_minarrival; /* LSA minimum arrival in milliseconds. */ | |
75 | ||
76 | /* SPF parameters */ | |
77 | unsigned int spf_delay; /* SPF delay time. */ | |
78 | unsigned int spf_holdtime; /* SPF hold time. */ | |
79 | unsigned int spf_max_holdtime; /* SPF maximum-holdtime */ | |
80 | unsigned int | |
81 | spf_hold_multiplier; /* Adaptive multiplier for hold time */ | |
82 | unsigned int spf_reason; /* reason bits while scheduling SPF */ | |
83 | ||
84 | struct timeval ts_spf; /* SPF calculation time stamp. */ | |
85 | struct timeval ts_spf_duration; /* Execution time of last SPF */ | |
86 | unsigned int last_spf_reason; /* Last SPF reason */ | |
87 | ||
88 | /* Threads */ | |
89 | struct thread *t_spf_calc; /* SPF calculation timer. */ | |
90 | struct thread *t_ase_calc; /* ASE calculation timer. */ | |
91 | struct thread *maxage_remover; | |
92 | struct thread *t_distribute_update; /* Distirbute update timer. */ | |
93 | ||
94 | uint32_t ref_bandwidth; | |
95 | ||
96 | /* Distance parameters */ | |
97 | uint8_t distance_all; | |
98 | uint8_t distance_intra; | |
99 | uint8_t distance_inter; | |
100 | uint8_t distance_external; | |
101 | ||
102 | struct route_table *distance_table; | |
103 | ||
104 | /* Used during ospf instance going down send LSDB | |
105 | * update to neighbors immediatly */ | |
106 | uint8_t inst_shutdown; | |
107 | ||
108 | QOBJ_FIELDS | |
109 | }; | |
110 | DECLARE_QOBJ_TYPE(ospf6) | |
111 | ||
112 | #define OSPF6_DISABLED 0x01 | |
113 | #define OSPF6_STUB_ROUTER 0x02 | |
114 | ||
115 | /* global pointer for OSPF top data structure */ | |
116 | extern struct ospf6 *ospf6; | |
117 | extern struct ospf6_master *om6; | |
118 | ||
119 | /* prototypes */ | |
120 | extern void ospf6_master_init(void); | |
121 | extern void ospf6_top_init(void); | |
122 | extern void ospf6_delete(struct ospf6 *o); | |
123 | extern void ospf6_router_id_update(void); | |
124 | ||
125 | extern void ospf6_maxage_remove(struct ospf6 *o); | |
126 | ||
127 | #endif /* OSPF6_TOP_H */ |