Annotation of embedaddon/quagga/ospf6d/ospf6_lsdb.h, revision 1.1.1.1
1.1 misho 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_LSDB_H
23: #define OSPF6_LSDB_H
24:
25: #include "prefix.h"
26: #include "table.h"
27:
28: struct ospf6_lsdb
29: {
30: void *data; /* data structure that holds this lsdb */
31: struct route_table *table;
32: u_int32_t count;
33: void (*hook_add) (struct ospf6_lsa *);
34: void (*hook_remove) (struct ospf6_lsa *);
35: };
36:
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; \
44: if (lsa->retrans_count != 0) \
45: continue; \
46: if (IS_OSPF6_DEBUG_LSA_TYPE (lsa->header->type)) \
47: zlog_debug ("Remove MaxAge %s", lsa->name); \
48: ospf6_lsdb_remove (lsa, lsdb); \
49: } \
50: } while (0)
51:
52: /* Function Prototypes */
53: extern struct ospf6_lsdb *ospf6_lsdb_create (void *data);
54: extern void ospf6_lsdb_delete (struct ospf6_lsdb *lsdb);
55:
56: extern 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);
59: extern struct ospf6_lsa *ospf6_lsdb_lookup_next (u_int16_t type, u_int32_t id,
60: u_int32_t adv_router,
61: struct ospf6_lsdb *lsdb);
62:
63: extern void ospf6_lsdb_add (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb);
64: extern void ospf6_lsdb_remove (struct ospf6_lsa *lsa, struct ospf6_lsdb *lsdb);
65:
66: extern struct ospf6_lsa *ospf6_lsdb_head (struct ospf6_lsdb *lsdb);
67: extern struct ospf6_lsa *ospf6_lsdb_next (struct ospf6_lsa *lsa);
68:
69: extern struct ospf6_lsa *ospf6_lsdb_type_router_head (u_int16_t type,
70: u_int32_t adv_router,
71: struct ospf6_lsdb *lsdb);
72: extern struct ospf6_lsa *ospf6_lsdb_type_router_next (u_int16_t type,
73: u_int32_t adv_router,
74: struct ospf6_lsa *lsa);
75:
76: extern struct ospf6_lsa *ospf6_lsdb_type_head (u_int16_t type,
77: struct ospf6_lsdb *lsdb);
78: extern struct ospf6_lsa *ospf6_lsdb_type_next (u_int16_t type,
79: struct ospf6_lsa *lsa);
80:
81: extern void ospf6_lsdb_remove_all (struct ospf6_lsdb *lsdb);
82:
83: #define OSPF6_LSDB_SHOW_LEVEL_NORMAL 0
84: #define OSPF6_LSDB_SHOW_LEVEL_DETAIL 1
85: #define OSPF6_LSDB_SHOW_LEVEL_INTERNAL 2
86: #define OSPF6_LSDB_SHOW_LEVEL_DUMP 3
87:
88: extern void ospf6_lsdb_show (struct vty *vty, int level, u_int16_t *type,
89: u_int32_t *id, u_int32_t *adv_router,
90: struct ospf6_lsdb *lsdb);
91:
92: extern u_int32_t ospf6_new_ls_id (u_int16_t type, u_int32_t adv_router,
93: struct ospf6_lsdb *lsdb);
94: extern u_int32_t ospf6_new_ls_seqnum (u_int16_t type, u_int32_t id,
95: u_int32_t adv_router,
96: struct ospf6_lsdb *lsdb);
97:
98: #endif /* OSPF6_LSDB_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>