2003-07-12 Paul Jakma <paul@dishone.st>
* (global): Add/fixup NSSA ABR translation functionality
* ospfd.h: Adjust the NSSA ROLE defines. Rename STATE to TRANSLATE.
Rename the LSA_NSSA_GET define to LSA_OPTIONS_NSSA_GET.
* ospfd.c: Adjust to match changes to ospfd.h
* ospf_te.c: Adjust to match change to LSA_NSSA_GET.
* ospf_lsa.h: slights reformatting.
Add new NSSA functions, ospf_translated_nssa_compare() (not
currently used), ospf_translated_nssa_refresh() and
ospf_translated_nssa_originate().
* ospf_lsa.c: Implemented aforementioned new functions. Fix up
several NSSA hooks to /not/ be called for Type-5s which are
translated. Add additional hooks. Set the ROUTER_LSA_NT bit in
router-lsa flags if ABR does translation. New function,
ospf_lsa_translated_nssa_new() implemented. Dont register
translated LSAs for refreshing - instead we implicitly rely on
the ASBR refreshing the Type-7, and refresh the translated Type-5
at the same time. Some minor reformatting. Extra debug info added.
Also, existing debug statements modified to report LSA Id.
* ospf_flood.c: call ospf_translated_nssa_refresh() when refreshing
Type-7. minor reformatting.
* ospf_dump.c: Dump NSSA LSAs.
* ospf_asbr.h: slight reformatting. Export
ospf_external_route_lookup() (though, not used. probably will
undo this).
* ospf_abr.c: Slight reformatting in many places. Update to match
ospfd.h changes.
(ospf_abr_translate_nssa): make it work, using the new ospf_lsa
translation functions.
(Several places): change struct prefix * to struct prefix_ipv4 *.
(might as well do the casts at higher levels). Add more debug
info.
(ospf_abr_announce_stub_defaults): announce default to NSSA areas
too.
(ospf_abr_announce_nssa_defaults): do nothing. this function
probably should die. (see ospf_abr_announce_stub_defaults).
(ospf_abr_task_timer): run NSSA tasks.
diff --git a/ospfd/ospf_lsa.h b/ospfd/ospf_lsa.h
index 54c88d4..c5541c8 100644
--- a/ospfd/ospf_lsa.h
+++ b/ospfd/ospf_lsa.h
@@ -277,7 +277,9 @@
int ospf_external_lsa_originate_timer (struct thread *);
struct ospf_lsa *ospf_lsa_lookup (struct ospf_area *, u_int32_t,
struct in_addr, struct in_addr);
-struct ospf_lsa *ospf_lsa_lookup_by_id (struct ospf_area *,u_int32_t, struct in_addr);
+struct ospf_lsa *ospf_lsa_lookup_by_id (struct ospf_area *,
+ u_int32_t,
+ struct in_addr);
struct ospf_lsa *ospf_lsa_lookup_by_header (struct ospf_area *,
struct lsa_header *);
int ospf_lsa_more_recent (struct ospf_lsa *, struct ospf_lsa *);
@@ -319,10 +321,10 @@
#ifdef HAVE_NSSA
struct in_addr ospf_get_nssa_ip (struct ospf_area *);
-#endif /* HAVE NSSA */
-
-#ifdef HAVE_NSSA
-struct in_addr ospf_get_nssa_ip (struct ospf_area *);
+int ospf_translated_nssa_compare (struct ospf_lsa *, struct ospf_lsa *);
+struct ospf_lsa *ospf_translated_nssa_refresh (struct ospf *, struct ospf_lsa *,
+ struct ospf_lsa *);
+struct ospf_lsa *ospf_translated_nssa_originate (struct ospf *, struct ospf_lsa *);
#endif
#endif /* _ZEBRA_OSPF_LSA_H */