diff options
Diffstat (limited to 'ospf6d/ospf6_area.h')
-rw-r--r-- | ospf6d/ospf6_area.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/ospf6d/ospf6_area.h b/ospf6d/ospf6_area.h new file mode 100644 index 00000000..06844646 --- /dev/null +++ b/ospf6d/ospf6_area.h @@ -0,0 +1,90 @@ +/* + * OSPF6 Area Data Structure + * Copyright (C) 1999 Yasuhiro Ohara + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef OSPF_AREA_H +#define OSPF_AREA_H + +/* This file defines area parameters and data structures. */ + +#define OSPF6_AREA_RANGE_ADVERTISE 0 +#define OSPF6_AREA_RANGE_NOT_ADVERTISE 1 + +#include "ospf6_spf.h" +#include "ospf6_top.h" + +struct ospf6_area +{ + char str[16]; + + struct ospf6 *ospf6; /* back pointer */ + u_int32_t area_id; + u_char options[3]; /* OSPF Option including ExternalCapability */ + + list if_list; /* OSPF interface to this area */ + + struct ospf6_lsdb *lsdb; + + struct thread *spf_calc; + struct thread *route_calc; + int stat_spf_execed; + int stat_route_execed; + + struct route_table *table; /* new route table */ + + struct prefix_ipv6 area_range; + struct ospf6_spftree *spf_tree; + + struct ospf6_route_table *route_table; + struct ospf6_route_table *table_topology; + + void (*foreach_if) (struct ospf6_area *, void *, int, + void (*func) (void *, int, void *)); + void (*foreach_nei) (struct ospf6_area *, void *, int, + void (*func) (void *, int, void *)); + + struct thread *maxage_remover; + + struct thread *thread_router_lsa; +}; + + +/* prototypes */ + +int +ospf6_area_count_neighbor_in_state (u_char state, struct ospf6_area *o6a); + +void +ospf6_area_schedule_maxage_remover (void *arg, int val, void *obj); + +int ospf6_area_is_stub (struct ospf6_area *o6a); +int ospf6_area_is_transit (struct ospf6_area *o6a); +struct ospf6_area *ospf6_area_lookup (u_int32_t, struct ospf6 *); +struct ospf6_area *ospf6_area_create (u_int32_t); +void ospf6_area_delete (struct ospf6_area *); +void ospf6_area_show (struct vty *, struct ospf6_area *); +void +ospf6_area_statistics_show (struct vty *vty, struct ospf6_area *o6a); + +void ospf6_area_init (); + +#endif /* OSPF_AREA_H */ + |