/* OSPF Option */
u_char options[3];
- /* TransitCapability */
- int transit_capability;
-
/* Summary routes to be originated (includes Configured Address Ranges) */
- struct ospf6_route_table *summary_table;
+ struct ospf6_route_table *range_table;
+ struct ospf6_route_table *summary_prefix;
+ struct ospf6_route_table *summary_router;
+
+ /* Area type */
+ int no_summary;
/* OSPF interface list */
- list if_list;
+ struct list *if_list;
+
+ struct ospf6_lsdb *lsdb;
+ struct ospf6_lsdb *lsdb_self;
- struct ospf6_lsdb *lsdb;
struct ospf6_route_table *spf_table;
struct ospf6_route_table *route_table;
- struct thread *thread_spf_calculation;
- struct thread *thread_route_calculation;
+ u_int32_t spf_calculation; /* SPF calculation count */
struct thread *thread_router_lsa;
struct thread *thread_intra_prefix_lsa;
u_int32_t router_lsa_size_limit;
+
+ /* Area announce list */
+ struct
+ {
+ char *name;
+ struct access_list *list;
+ } _export;
+#define EXPORT_NAME(A) (A)->_export.name
+#define EXPORT_LIST(A) (A)->_export.list
+
+ /* Area acceptance list */
+ struct
+ {
+ char *name;
+ struct access_list *list;
+ } import;
+#define IMPORT_NAME(A) (A)->import.name
+#define IMPORT_LIST(A) (A)->import.list
+
+ /* Type 3 LSA Area prefix-list */
+ struct
+ {
+ char *name;
+ struct prefix_list *list;
+ } plist_in;
+#define PREFIX_NAME_IN(A) (A)->plist_in.name
+#define PREFIX_LIST_IN(A) (A)->plist_in.list
+
+ struct
+ {
+ char *name;
+ struct prefix_list *list;
+ } plist_out;
+#define PREFIX_NAME_OUT(A) (A)->plist_out.name
+#define PREFIX_LIST_OUT(A) (A)->plist_out.list
+
+ /* Time stamps. */
+ struct timeval ts_spf; /* SPF calculation time stamp. */
};
-#define OSPF6_AREA_DISABLE 0x01
-#define OSPF6_AREA_STUB 0x02
+#define OSPF6_AREA_ENABLE 0x01
+#define OSPF6_AREA_ACTIVE 0x02
+#define OSPF6_AREA_TRANSIT 0x04 /* TransitCapability */
+#define OSPF6_AREA_STUB 0x08
+
+#define IS_AREA_ENABLED(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_ENABLE))
+#define IS_AREA_ACTIVE(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_ACTIVE))
+#define IS_AREA_TRANSIT(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_TRANSIT))
+#define IS_AREA_STUB(oa) (CHECK_FLAG ((oa)->flag, OSPF6_AREA_STUB))
/* prototypes */
-int ospf6_area_cmp (void *va, void *vb);
-int ospf6_area_is_stub (struct ospf6_area *o6a);
-struct ospf6_area *ospf6_area_create (u_int32_t, struct ospf6 *);
-void ospf6_area_delete (struct ospf6_area *);
-struct ospf6_area *ospf6_area_lookup (u_int32_t, struct ospf6 *);
+extern int ospf6_area_cmp (void *va, void *vb);
-void ospf6_area_enable (struct ospf6_area *);
-void ospf6_area_disable (struct ospf6_area *);
+extern struct ospf6_area *ospf6_area_create (u_int32_t, struct ospf6 *);
+extern void ospf6_area_delete (struct ospf6_area *);
+extern struct ospf6_area *ospf6_area_lookup (u_int32_t, struct ospf6 *);
-void ospf6_area_show (struct vty *, struct ospf6_area *);
-void ospf6_area_init ();
+extern void ospf6_area_enable (struct ospf6_area *);
+extern void ospf6_area_disable (struct ospf6_area *);
-#endif /* OSPF_AREA_H */
+extern void ospf6_area_show (struct vty *, struct ospf6_area *);
+extern void ospf6_area_config_write (struct vty *vty);
+extern void ospf6_area_init (void);
+
+#endif /* OSPF_AREA_H */