Import Upstream version 1.2.2
[quagga-debian.git] / ospfd / ChangeLog.opaque.txt
1 ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
2 Changes 2002.12.20
3
4 1. Bug fixes
5
6   1.1 When an opaque LSA is being removed from (or added to) the LSDB,
7       it does not mean a change in network topology. Therefore, SPF
8       recalculation should not be triggered in that case.
9       There was an assertion failure problem "assert (rn && rn->info)"
10       inside the function "ospf_ase_incremental_update()", because
11       the upper function "ospf_lsa_maxage_walker_remover()" called it
12       when a type-11 opaque LSA is removed due to MaxAge.
13
14   1.2 Type-9 LSA is defined to have "link-local" flooding scope.
15       In the Database exchange procedure with a new neighbor, a type-9
16       LSA was added in the database summary of a DD message, even if
17       the link is different from the one that have bound to.
18
19 2. Feature enhancements
20
21   2.1 Though a "wildcard" concept to handle type-9/10/11 LSAs altogether
22       has introduced about a year ago, it was only a symbol definition
23       and actual handling mechanism was not implemented. Now it works.
24
25 ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
26 Changes 2002.7.8
27
28 1. Bug fixes
29
30   1.1 When "ospf_delete_opaque_functab()" is called, internal structure
31       "oipt" remain unfreed. If register/delete functab is repeated,
32       illegal memory access happens due to this "oipt".
33
34   1.2 In "free_opaque_info_per_id()", there was a crucial typo which
35       ignores a condition test.
36
37       "if (oipi->lsa != NULL);" <-- semicolon!
38
39 2. Feature enhancements
40
41   None.
42
43 ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
44 Changes 2001.12.03
45
46 1. Bug fixes
47
48   1.1 Though a new member "oi" has added to "struct ospf_lsa" to control
49       flooding scope of type-9 Opaque-LSAs, the value was always NULL
50       because no one set it.
51
52   1.2 In the function "show_ip_ospf_database_summary()" and "show_lsa_
53       detail_adv_router()", VTY output for type-11 Opaque-LSAs did not
54       work properly.
55
56   1.3 URL for the opaque-type assignment reference has changed.
57
58   1.4 In the file "ospf_mpls_te.c", printf formats have changed to
59       avoid compiler warning messages; "%lu" -> "%u", "%lx" -> "%x".
60       Note that this hack depends on OS, compiler and their versions. 
61
62   1.5 One of attached documentation "opaque_lsa.txt" has changed to
63       reflect the latest coding.
64
65 2. Feature enhancements
66
67   2.1 Knowing that it is an ugly hack, an "officially unallocated"
68       opaque-type value 0 has newly introduced as a "wildcard",
69       which matches to all opaque-type.
70       This value must not be flooded to the network, of course.
71
72   2.2 The Opaque-core module makes use of newly introduced hooks to
73       dispatch every LSDB change (LSA installation and deletion) to
74       preregistered opaque users.
75       Therefore, by providing appropriate callback functions as new
76       parameters of "ospf_register_opaque_functab()", an opaque user
77       can refer to every LSA instance to be installed into, or to be
78       deleted from, the LSDB.
79
80 ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
81 Changes 2001.10.31
82
83 1. Bug fixes
84
85   1.1 Since each LSA has their own lifetime, they will remain in a
86       routing domain (being stored in LSDB of each router), until their
87       age naturally reach to MaxAge or explicitly being flushed by the
88       originated router. Therefore, if a router restarted with a short
89       downtime, it is possible that previously flooded self-originated
90       LSAs might received if the NSM status is not less than Exchange.
91
92       There were some problems in the way of handling self-originated
93       Opaque-LSAs if they are contained in a received LSUpd message,
94       but not installed to the local LSDB yet.
95       Regardless of some conditions to start originating Opaque-LSAs
96       (there should be at least one opaque-capable full-state neighbor),
97       the function "ospf_flood()" will be called to flood and install
98       this brand-new looking LSA.
99       As the result, when the NSM of an opaque-capable neighbor gets
100       full, internal state inconsistency happens; a user of Opaque-LSA
101       such as MPLS-TE can refer to self-originated LSAs in the local
102       LSDB, but cannot modify their contents...
103
104       Above problems have fixed with a policy "flush it from the whole
105       routing domain and keep silent until the flushing completed".
106       By using this sweeping technique, we can be free from confusion
107       caused by self-originated LSAs received via network. 
108
109   1.2 The function "ospf_opaque_type_name()" contained massive ifdefs
110       corresponding to each "opaque-type".
111       These unnecessary ifdefs are removed completely.
112
113   1.3 In the function "ospf_delete_opaque_functab()", there was an
114       improper loop control that causes illegal memory access.
115       Original coding was "next = nextnode (node)".
116
117   1.4 The function "ospf_mpls_te_ism_change()" could not handle the
118       case when the ISM changes from Waiting to DR/BDR/Other.
119       So, there was a case that even if one of an ISM become
120       operational and MPLS-TE module has started, the corresponding
121       Opaque-LSA cannot be originated.
122
123   1.5 The function "ospf_opaque_lsa_reoriginate_schedule()" did not
124       allow to be called multiple times, simply because handling
125       module for the given "lsa-type & opaque-type" already exists.
126       But this assumption seems to be wrong.
127       Change the policy to allow this function to be called multiple
128       times and let the caller to decide what should do when the
129       corresponding callback function "(* functab->lsa_originator)()"
130       is called.
131
132 2. Feature enhancements
133
134   2.1 The global bitmap "opaque" has introduced instead of former flag
135       "OpaqueCapable", to store complex conditions to handle Opaque-LSAs.
136
137   2.2 The MPLS-TE module now referes to "draft-katz-yeung-ospf-traffic
138       -06.txt", no significant changes with 05 version, though.
139
140 ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
141 Changes 2001.08.03
142
143 1. Bug fixes
144
145   1.1 Even if the ospfd started with opaque capability enabled, when
146       the ospfd receives an unknown opaque-type (unregistered by the
147       function "ospf_register_opaque_functab()" beforehand), the LSA
148       was discarded. As the result, only the opaque-LSAs that have
149       commonly registered by opaque-capable ospf routers can be
150       flooded in a routing domain.
151
152       This behavior has fixed so that arbitrary opaque-type LSAs can
153       be flooded among opaque-capable ospf routers.
154       If the ospfd has opaque-LSA capability but disabled at runtime,
155       received opaque-LSAs can be accepted and registered to LSDB as
156       is, but not be flooded to the network; those opaque LSAs will
157       remain in LSDB until explicitly flushed by incoming LSUpd
158       messages with MaxAge, or their age naturally reaches to MaxAge.
159
160   1.2 The function "ospf_register_opaque_functab()" did not check
161       if the entry corresponding to the given "lsa-type, opaque-type"
162       combination already exists or not.
163       This problem has fixed not to allow multiple registration.
164
165   1.3 Since type-11 (AS external) LSAs will be flooded beyond areas,
166       there is little relationship between "struct lsa" and "struct
167       area". More specifically, the pointer address "lsa->area" can
168       be NULL if the lsa-type is 11, thus an illegal memory access
169       will happen. This problem has fixed.
170
171   1.4 When self-originated opaque-LSAs are received via network and
172       if the corresponding opaque-type functions are not available
173       (they have already deleted) at that time, those LSAs were
174       dropped due to "unknown opaque-type" error.
175       After the problem 1.1 has fixed, those "self-originated" LSAs
176       were registered to LSDB and then flooded to the network, even
177       if the processing functions did not exist...
178
179       After all, this problem has fixed so that those LSAs should
180       explicitly be flushed from the routing domain immediately, if
181       the processing functions cannot find at that time.
182
183   1.5 Some typo have fixed.
184
185       --- EXAMPLE ---
186       static int
187       opaque_lsa_originate_callback (list funclist, void *lsa_type_dependent)
188                                                           ^^^^^
189       --- EXAMPLE ---
190
191 2. Feature enhancements
192
193   2.1 According to the description of rfc2328 in section 10.8, any
194       change in the router's optional capabilities should trigger
195       the option re-negotiation procedures with neighbors.
196
197       --- EXCERPT ---
198                               If for some reason the router's optional
199         capabilities change, the Database Exchange procedure should be
200         restarted by reverting to neighbor state ExStart.
201       --- EXCERPT ---
202
203       For the opaque-capability changes, this feature has implemented.
204       More specifically, if "ospf opaque-lsa" or "no ospf opaque-lsa"
205       VTY command is given at runtime, all self-originated LSAs will
206       be flushed immediately and then all neighbor status will be
207       forced to ExStart by generating SeqNumberMismatch events.
208
209   2.1 When we change opaque-capability dynamically (ON -> OFF -> ON),
210       there was no trigger at "OFF->ON" timing to reactivate opaque
211       LSA handling modules (such as MPLS-TE) that have once forcibly
212       stopped at "ON->OFF" timing.
213       Now this dynamic reactivation feature has added.
214
215   2.2 The MPLS-TE module now referes to "draft-katz-yeung-ospf-traffic
216       -05.txt", no significant changes with 04 version, though.
217
218 ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * ----- * -----
219 Changes 2001.03.28
220
221   Initial release of Opaque-LSA/MPLS-TE extensions for the zebra/ospfd.