Annotation of embedaddon/quagga/ospfd/ospf_spf.h, revision 1.1.1.2

1.1       misho       1: /*
                      2:  * OSPF calculation.
                      3:  * Copyright (C) 1999 Kunihiro Ishiguro
                      4:  *
                      5:  * This file is part of GNU Zebra.
                      6:  *
                      7:  * GNU Zebra is free software; you can redistribute it and/or modify it
                      8:  * under the terms of the GNU General Public License as published by the
                      9:  * Free Software Foundation; either version 2, or (at your option) any
                     10:  * later version.
                     11:  *
                     12:  * GNU Zebra is distributed in the hope that it will be useful, but
                     13:  * WITHOUT ANY WARRANTY; without even the implied warranty of
                     14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                     15:  * General Public License for more details.
                     16:  *
                     17:  * You should have received a copy of the GNU General Public License
                     18:  * along with GNU Zebra; see the file COPYING.  If not, write to the Free
                     19:  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
                     20:  * 02111-1307, USA.
                     21:  */
                     22: 
                     23: #ifndef _QUAGGA_OSPF_SPF_H
                     24: #define _QUAGGA_OSPF_SPF_H
                     25: 
                     26: /* values for vertex->type */
                     27: #define OSPF_VERTEX_ROUTER  1  /* for a Router-LSA */
                     28: #define OSPF_VERTEX_NETWORK 2  /* for a Network-LSA */
                     29: 
                     30: /* values for vertex->flags */
                     31: #define OSPF_VERTEX_PROCESSED      0x01
                     32: 
                     33: /* The "root" is the node running the SPF calculation */
                     34: 
                     35: /* A router or network in an area */
                     36: struct vertex
                     37: {
                     38:   u_char flags;
                     39:   u_char type;         /* copied from LSA header */
                     40:   struct in_addr id;   /* copied from LSA header */
                     41:   struct lsa_header *lsa; /* Router or Network LSA */
                     42:   int *stat;           /* Link to LSA status. */
                     43:   u_int32_t distance;  /* from root to this vertex */  
                     44:   struct list *parents;                /* list of parents in SPF tree */
                     45:   struct list *children;       /* list of children in SPF tree*/
                     46: };
                     47: 
                     48: /* A nexthop taken on the root node to get to this (parent) vertex */
                     49: struct vertex_nexthop
                     50: {
                     51:   struct ospf_interface *oi;   /* output intf on root node */
                     52:   struct in_addr router;       /* router address to send to */
                     53: };
                     54: 
                     55: struct vertex_parent
                     56: {
                     57:   struct vertex_nexthop *nexthop; /* link to nexthop info for this parent */
                     58:   struct vertex *parent;       /* parent vertex */
                     59:   int backlink;                        /* index back to parent for router-lsa's */
                     60: };
                     61: 
1.1.1.2 ! misho      62: /* What triggered the SPF ? */
        !            63: typedef enum {
        !            64:   SPF_FLAG_ROUTER_LSA_INSTALL = 1,
        !            65:   SPF_FLAG_NETWORK_LSA_INSTALL,
        !            66:   SPF_FLAG_SUMMARY_LSA_INSTALL,
        !            67:   SPF_FLAG_ASBR_SUMMARY_LSA_INSTALL,
        !            68:   SPF_FLAG_MAXAGE,
        !            69:   SPF_FLAG_ABR_STATUS_CHANGE,
        !            70:   SPF_FLAG_ASBR_STATUS_CHANGE,
        !            71:   SPF_FLAG_CONFIG_CHANGE,
        !            72: } ospf_spf_reason_t;
        !            73: 
        !            74: extern void ospf_spf_calculate_schedule (struct ospf *, ospf_spf_reason_t);
1.1       misho      75: extern void ospf_rtrs_free (struct route_table *);
                     76: 
                     77: /* void ospf_spf_calculate_timer_add (); */
                     78: #endif /* _QUAGGA_OSPF_SPF_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>