]>
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 | * | |
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_LSDB_H | |
23 | #define OSPF6_LSDB_H | |
24 | ||
25 | #include "prefix.h" | |
26 | #include "table.h" | |
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 | ||
508e53e2 | 37 | #define OSPF6_LSDB_MAXAGE_REMOVER(lsdb) \ |
38 | do { \ | |
39 | struct ospf6_lsa *lsa; \ | |
40 | for (lsa = ospf6_lsdb_head (lsdb); lsa; lsa = ospf6_lsdb_next (lsa)) \ | |
41 | { \ | |
42 | if (! OSPF6_LSA_IS_MAXAGE (lsa)) \ | |
43 | continue; \ | |
1e05838a | 44 | if (lsa->retrans_count != 0) \ |
508e53e2 | 45 | continue; \ |
1e05838a | 46 | if (IS_OSPF6_DEBUG_LSA_TYPE (lsa->header->type)) \ |
47 | zlog_info ("Remove MaxAge %s", lsa->name); \ | |
508e53e2 | 48 | ospf6_lsdb_remove (lsa, lsdb); \ |
49 | } \ | |
50 | } while (0) | |
718e3744 | 51 | |
52 | /* Function Prototypes */ | |
6452df09 | 53 | struct ospf6_lsdb *ospf6_lsdb_create (void *data); |
718e3744 | 54 | void ospf6_lsdb_delete (struct ospf6_lsdb *lsdb); |
55 | ||
508e53e2 | 56 | struct ospf6_lsa *ospf6_lsdb_lookup (u_int16_t type, u_int32_t id, |
57 | u_int32_t adv_router, | |
58 | struct ospf6_lsdb *lsdb); | |
718e3744 | 59 | |
508e53e2 | 60 | void ospf6_lsdb_add (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); |
61 | void ospf6_lsdb_remove (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb); | |
718e3744 | 62 | |
508e53e2 | 63 | struct ospf6_lsa *ospf6_lsdb_head (struct ospf6_lsdb *lsdb); |
64 | struct ospf6_lsa *ospf6_lsdb_next (struct ospf6_lsa *lsa); | |
718e3744 | 65 | |
508e53e2 | 66 | struct ospf6_lsa *ospf6_lsdb_type_router_head (u_int16_t type, |
67 | u_int32_t adv_router, | |
68 | struct ospf6_lsdb *lsdb); | |
69 | struct ospf6_lsa *ospf6_lsdb_type_router_next (u_int16_t type, | |
70 | u_int32_t adv_router, | |
71 | struct ospf6_lsa *lsa); | |
72 | ||
73 | struct ospf6_lsa *ospf6_lsdb_type_head (u_int16_t type, | |
74 | struct ospf6_lsdb *lsdb); | |
75 | struct ospf6_lsa *ospf6_lsdb_type_next (u_int16_t type, | |
76 | struct ospf6_lsa *lsa); | |
718e3744 | 77 | |
718e3744 | 78 | void ospf6_lsdb_remove_all (struct ospf6_lsdb *lsdb); |
79 | ||
049207c3 | 80 | #define OSPF6_LSDB_SHOW_LEVEL_NORMAL 0 |
81 | #define OSPF6_LSDB_SHOW_LEVEL_DETAIL 1 | |
82 | #define OSPF6_LSDB_SHOW_LEVEL_INTERNAL 2 | |
83 | #define OSPF6_LSDB_SHOW_LEVEL_DUMP 3 | |
84 | ||
85 | void ospf6_lsdb_show | |
86 | (struct vty *vty, int level, | |
87 | u_int16_t *type, u_int32_t *id, u_int32_t *adv_router, | |
88 | struct ospf6_lsdb *lsdb); | |
718e3744 | 89 | |
049207c3 | 90 | u_int32_t ospf6_new_ls_id |
91 | (u_int16_t type, u_int32_t adv_router, struct ospf6_lsdb *lsdb); | |
92 | u_int32_t ospf6_new_ls_seqnum | |
93 | (u_int16_t type, u_int32_t id, u_int32_t adv_router, struct ospf6_lsdb *lsdb); | |
718e3744 | 94 | |
95 | #endif /* OSPF6_LSDB_H */ | |
96 | ||
508e53e2 | 97 |