]>
Commit | Line | Data |
---|---|---|
718e3744 | 1 | /* |
508e53e2 | 2 | * Copyright (C) 2003 Yasuhiro Ohara |
718e3744 | 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 | * | |
896014f4 DL |
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 | |
718e3744 | 19 | */ |
20 | ||
21 | #ifndef OSPF6_LSDB_H | |
22 | #define OSPF6_LSDB_H | |
23 | ||
24 | #include "prefix.h" | |
25 | #include "table.h" | |
c3c0ac83 | 26 | #include "ospf6_route.h" |
718e3744 | 27 | |
718e3744 | 28 | struct ospf6_lsdb |
29 | { | |
6452df09 | 30 | void *data; /* data structure that holds this lsdb */ |
718e3744 | 31 | struct route_table *table; |
32 | u_int32_t count; | |
508e53e2 | 33 | void (*hook_add) (struct ospf6_lsa *); |
34 | void (*hook_remove) (struct ospf6_lsa *); | |
718e3744 | 35 | }; |
36 | ||
718e3744 | 37 | /* Function Prototypes */ |
6ac29a51 PJ |
38 | extern struct ospf6_lsdb *ospf6_lsdb_create (void *data); |
39 | extern void ospf6_lsdb_delete (struct ospf6_lsdb *lsdb); | |
718e3744 | 40 | |
6ac29a51 PJ |
41 | extern struct ospf6_lsa *ospf6_lsdb_lookup (u_int16_t type, u_int32_t id, |
42 | u_int32_t adv_router, | |
43 | struct ospf6_lsdb *lsdb); | |
44 | extern struct ospf6_lsa *ospf6_lsdb_lookup_next (u_int16_t type, u_int32_t id, | |
45 | u_int32_t adv_router, | |
46 | struct ospf6_lsdb *lsdb); | |
718e3744 | 47 | |
6ac29a51 PJ |
48 | extern void ospf6_lsdb_add (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); |
49 | extern void ospf6_lsdb_remove (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); | |
718e3744 | 50 | |
6ac29a51 PJ |
51 | extern struct ospf6_lsa *ospf6_lsdb_head (struct ospf6_lsdb *lsdb); |
52 | extern struct ospf6_lsa *ospf6_lsdb_next (struct ospf6_lsa *lsa); | |
718e3744 | 53 | |
6ac29a51 | 54 | extern struct ospf6_lsa *ospf6_lsdb_type_router_head (u_int16_t type, |
508e53e2 | 55 | u_int32_t adv_router, |
56 | struct ospf6_lsdb *lsdb); | |
6ac29a51 | 57 | extern struct ospf6_lsa *ospf6_lsdb_type_router_next (u_int16_t type, |
508e53e2 | 58 | u_int32_t adv_router, |
59 | struct ospf6_lsa *lsa); | |
60 | ||
6ac29a51 PJ |
61 | extern struct ospf6_lsa *ospf6_lsdb_type_head (u_int16_t type, |
62 | struct ospf6_lsdb *lsdb); | |
63 | extern struct ospf6_lsa *ospf6_lsdb_type_next (u_int16_t type, | |
64 | struct ospf6_lsa *lsa); | |
718e3744 | 65 | |
6ac29a51 | 66 | extern void ospf6_lsdb_remove_all (struct ospf6_lsdb *lsdb); |
a765eb93 | 67 | extern void ospf6_lsdb_lsa_unlock (struct ospf6_lsa *lsa); |
718e3744 | 68 | |
f58c5fbd PJ |
69 | enum ospf_lsdb_show_level { |
70 | OSPF6_LSDB_SHOW_LEVEL_NORMAL = 0, | |
71 | OSPF6_LSDB_SHOW_LEVEL_DETAIL, | |
72 | OSPF6_LSDB_SHOW_LEVEL_INTERNAL, | |
73 | OSPF6_LSDB_SHOW_LEVEL_DUMP, | |
74 | }; | |
049207c3 | 75 | |
f58c5fbd PJ |
76 | extern void ospf6_lsdb_show (struct vty *vty, |
77 | enum ospf_lsdb_show_level level, u_int16_t *type, | |
6ac29a51 PJ |
78 | u_int32_t *id, u_int32_t *adv_router, |
79 | struct ospf6_lsdb *lsdb); | |
718e3744 | 80 | |
6ac29a51 PJ |
81 | extern u_int32_t ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router, |
82 | struct ospf6_lsdb *lsdb); | |
83 | extern u_int32_t ospf6_new_ls_seqnum (u_int16_t type, u_int32_t id, | |
84 | u_int32_t adv_router, | |
85 | struct ospf6_lsdb *lsdb); | |
a765eb93 | 86 | extern int ospf6_lsdb_maxage_remover (struct ospf6_lsdb *lsdb); |
718e3744 | 87 | |
88 | #endif /* OSPF6_LSDB_H */ |