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>