Annotation of embedaddon/quagga/ospfd/ospf_neighbor.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * OSPF Neighbor functions.
        !             3:  * Copyright (C) 1999, 2000 Toshiaki Takada
        !             4:  *
        !             5:  * This file is part of GNU Zebra.
        !             6:  * 
        !             7:  * GNU Zebra is free software; you can redistribute it and/or modify
        !             8:  * it under the terms of the GNU General Public License as published
        !             9:  * by the Free Software Foundation; either version 2, or (at your
        !            10:  * option) any 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
        !            19:  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
        !            20:  * Boston, MA 02111-1307, USA.
        !            21:  */
        !            22: 
        !            23: #ifndef _ZEBRA_OSPF_NEIGHBOR_H
        !            24: #define _ZEBRA_OSPF_NEIGHBOR_H
        !            25: 
        !            26: #include <ospfd/ospf_packet.h>
        !            27: 
        !            28: /* Neighbor Data Structure */
        !            29: struct ospf_neighbor
        !            30: {
        !            31:   /* This neighbor's parent ospf interface. */
        !            32:   struct ospf_interface *oi;
        !            33: 
        !            34:   /* OSPF neighbor Information */
        !            35:   u_char state;                                /* NSM status. */
        !            36:   u_char dd_flags;                     /* DD bit flags. */
        !            37:   u_int32_t dd_seqnum;                 /* DD Sequence Number. */
        !            38: 
        !            39:   /* Neighbor Information from Hello. */
        !            40:   struct prefix address;               /* Neighbor Interface Address. */
        !            41: 
        !            42:   struct in_addr src;                  /* Src address. */
        !            43:   struct in_addr router_id;            /* Router ID. */
        !            44:   u_char options;                      /* Options. */
        !            45:   int priority;                                /* Router Priority. */
        !            46:   struct in_addr d_router;             /* Designated Router. */
        !            47:   struct in_addr bd_router;            /* Backup Designated Router. */
        !            48: 
        !            49:   /* Last sent Database Description packet. */
        !            50:   struct ospf_packet *last_send;
        !            51:   /* Timestemp when last Database Description packet was sent */
        !            52:   struct timeval last_send_ts;
        !            53: 
        !            54:   /* Last received Databse Description packet. */
        !            55:   struct
        !            56:   {
        !            57:     u_char options;
        !            58:     u_char flags;
        !            59:     u_int32_t dd_seqnum;
        !            60:   } last_recv;
        !            61: 
        !            62:   /* LSA data. */
        !            63:   struct ospf_lsdb ls_rxmt;
        !            64:   struct ospf_lsdb db_sum;
        !            65:   struct ospf_lsdb ls_req;
        !            66:   struct ospf_lsa *ls_req_last;
        !            67: 
        !            68:   u_int32_t crypt_seqnum;           /* Cryptographic Sequence Number. */
        !            69: 
        !            70:   /* Timer values. */
        !            71:   u_int32_t v_inactivity;
        !            72:   u_int32_t v_db_desc;
        !            73:   u_int32_t v_ls_req;
        !            74:   u_int32_t v_ls_upd;
        !            75: 
        !            76:   /* Threads. */
        !            77:   struct thread *t_inactivity;
        !            78:   struct thread *t_db_desc;
        !            79:   struct thread *t_ls_req;
        !            80:   struct thread *t_ls_upd;
        !            81:   struct thread *t_hello_reply;
        !            82: 
        !            83:   /* NBMA configured neighbour */
        !            84:   struct ospf_nbr_nbma *nbr_nbma;
        !            85: 
        !            86:   /* Statistics */
        !            87:   struct timeval ts_last_progress;  /* last advance of NSM            */
        !            88:   struct timeval ts_last_regress;   /* last regressive NSM change     */
        !            89:   const char *last_regress_str;     /* Event which last regressed NSM */
        !            90:   u_int32_t state_change;           /* NSM state change counter       */
        !            91: };
        !            92: 
        !            93: /* Macros. */
        !            94: #define NBR_IS_DR(n)   IPV4_ADDR_SAME (&n->address.u.prefix4, &n->d_router)
        !            95: #define NBR_IS_BDR(n)   IPV4_ADDR_SAME (&n->address.u.prefix4, &n->bd_router)
        !            96: 
        !            97: /* Prototypes. */
        !            98: extern struct ospf_neighbor *ospf_nbr_new (struct ospf_interface *);
        !            99: extern void ospf_nbr_free (struct ospf_neighbor *);
        !           100: extern void ospf_nbr_delete (struct ospf_neighbor *);
        !           101: extern int ospf_nbr_bidirectional (struct in_addr *, struct in_addr *, int);
        !           102: extern void ospf_nbr_add_self (struct ospf_interface *);
        !           103: extern int ospf_nbr_count (struct ospf_interface *, int);
        !           104: #ifdef HAVE_OPAQUE_LSA
        !           105: extern int ospf_nbr_count_opaque_capable (struct ospf_interface *);
        !           106: #endif /* HAVE_OPAQUE_LSA */
        !           107: extern struct ospf_neighbor *ospf_nbr_get (struct ospf_interface *,
        !           108:                                           struct ospf_header *,
        !           109:                                           struct ip *, struct prefix *);
        !           110: extern struct ospf_neighbor *ospf_nbr_lookup (struct ospf_interface *,
        !           111:                                              struct ip *,
        !           112:                                              struct ospf_header *);
        !           113: extern struct ospf_neighbor *ospf_nbr_lookup_by_addr (struct route_table *,
        !           114:                                                      struct in_addr *);
        !           115: extern struct ospf_neighbor *ospf_nbr_lookup_by_routerid (struct route_table
        !           116:                                                          *,
        !           117:                                                          struct in_addr *);
        !           118: extern void ospf_renegotiate_optional_capabilities (struct ospf *top);
        !           119: 
        !           120: #endif /* _ZEBRA_OSPF_NEIGHBOR_H */

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