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/ospfd.h b/ospfd/ospfd.h
index ca9d9a9..23a83ff 100644
--- a/ospfd/ospfd.h
+++ b/ospfd/ospfd.h
@@ -344,11 +344,11 @@
 
   u_char NSSATranslatorRole;          /* NSSA configured role */
 #define OSPF_NSSA_ROLE_NEVER     0
-#define OSPF_NSSA_ROLE_ALWAYS    1
-#define OSPF_NSSA_ROLE_CANDIDATE 2
+#define OSPF_NSSA_ROLE_CANDIDATE 1
+#define OSPF_NSSA_ROLE_ALWAYS    2
   u_char NSSATranslatorState;              /* NSSA operational role */
-#define OSPF_NSSA_STATE_DISABLED 0
-#define OSPF_NSSA_STATE_ENABLED  2
+#define OSPF_NSSA_TRANSLATE_DISABLED 0
+#define OSPF_NSSA_TRANSLATE_ENABLED  1
   int NSSATranslatorStabilityInterval;
   
   u_char transit;			/* TransitCapability. */
@@ -474,9 +474,8 @@
 #define LSA_OPTIONS_GET(area) \
         (((area)->external_routing == OSPF_AREA_DEFAULT) ? OSPF_OPTION_E : 0)
 #ifdef HAVE_NSSA
-#define LSA_NSSA_GET(area) \
-        (((area)->external_routing == OSPF_AREA_NSSA) ? \
-          (area)->NSSATranslatorState : 0)
+#define LSA_OPTIONS_NSSA_GET(area) \
+        (((area)->external_routing == OSPF_AREA_NSSA)  ? OSPF_OPTION_NP : 0)
 #endif /* HAVE_NSSA */
 
 #define OSPF_TIMER_ON(T,F,V)                                                  \