Annotation of embedaddon/quagga/ospf6d/ospf6_area.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 OSPF_AREA_H
! 23: #define OSPF_AREA_H
! 24:
! 25: #include "ospf6_top.h"
! 26:
! 27: struct ospf6_area
! 28: {
! 29: /* Reference to Top data structure */
! 30: struct ospf6 *ospf6;
! 31:
! 32: /* Area-ID */
! 33: u_int32_t area_id;
! 34:
! 35: /* Area-ID string */
! 36: char name[16];
! 37:
! 38: /* flag */
! 39: u_char flag;
! 40:
! 41: /* OSPF Option */
! 42: u_char options[3];
! 43:
! 44: /* Summary routes to be originated (includes Configured Address Ranges) */
! 45: struct ospf6_route_table *range_table;
! 46: struct ospf6_route_table *summary_prefix;
! 47: struct ospf6_route_table *summary_router;
! 48:
! 49: /* OSPF interface list */
! 50: struct list *if_list;
! 51:
! 52: struct ospf6_lsdb *lsdb;
! 53: struct ospf6_lsdb *lsdb_self;
! 54:
! 55: struct ospf6_route_table *spf_table;
! 56: struct ospf6_route_table *route_table;
! 57:
! 58: struct thread *thread_spf_calculation;
! 59: struct thread *thread_route_calculation;
! 60:
! 61: struct thread *thread_router_lsa;
! 62: struct thread *thread_intra_prefix_lsa;
! 63: u_int32_t router_lsa_size_limit;
! 64:
! 65: /* Area announce list */
! 66: struct
! 67: {
! 68: char *name;
! 69: struct access_list *list;
! 70: } _export;
! 71: #define EXPORT_NAME(A) (A)->_export.name
! 72: #define EXPORT_LIST(A) (A)->_export.list
! 73:
! 74: /* Area acceptance list */
! 75: struct
! 76: {
! 77: char *name;
! 78: struct access_list *list;
! 79: } import;
! 80: #define IMPORT_NAME(A) (A)->import.name
! 81: #define IMPORT_LIST(A) (A)->import.list
! 82:
! 83: /* Type 3 LSA Area prefix-list */
! 84: struct
! 85: {
! 86: char *name;
! 87: struct prefix_list *list;
! 88: } plist_in;
! 89: #define PREFIX_NAME_IN(A) (A)->plist_in.name
! 90: #define PREFIX_LIST_IN(A) (A)->plist_in.list
! 91:
! 92: struct
! 93: {
! 94: char *name;
! 95: struct prefix_list *list;
! 96: } plist_out;
! 97: #define PREFIX_NAME_OUT(A) (A)->plist_out.name
! 98: #define PREFIX_LIST_OUT(A) (A)->plist_out.list
! 99:
! 100: };
! 101:
! 102: #define OSPF6_AREA_ENABLE 0x01
! 103: #define OSPF6_AREA_ACTIVE 0x02
! 104: #define OSPF6_AREA_TRANSIT 0x04 /* TransitCapability */
! 105: #define OSPF6_AREA_STUB 0x08
! 106:
! 107: #define BACKBONE_AREA_ID (htonl (0))
! 108: #define IS_AREA_BACKBONE(oa) ((oa)->area_id == BACKBONE_AREA_ID)
! 109: #define IS_AREA_ENABLED(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_ENABLE))
! 110: #define IS_AREA_ACTIVE(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_ACTIVE))
! 111: #define IS_AREA_TRANSIT(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_TRANSIT))
! 112: #define IS_AREA_STUB(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_STUB))
! 113:
! 114: /* prototypes */
! 115: extern int ospf6_area_cmp (void *va, void *vb);
! 116:
! 117: extern struct ospf6_area *ospf6_area_create (u_int32_t, struct ospf6 *);
! 118: extern void ospf6_area_delete (struct ospf6_area *);
! 119: extern struct ospf6_area *ospf6_area_lookup (u_int32_t, struct ospf6 *);
! 120:
! 121: extern void ospf6_area_enable (struct ospf6_area *);
! 122: extern void ospf6_area_disable (struct ospf6_area *);
! 123:
! 124: extern void ospf6_area_show (struct vty *, struct ospf6_area *);
! 125:
! 126: extern void ospf6_area_config_write (struct vty *vty);
! 127: extern void ospf6_area_init (void);
! 128:
! 129: #endif /* OSPF_AREA_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>