Annotation of embedaddon/quagga/ospf6d/ospf6_lsdb.h, revision 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>