diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2021-10-08 09:05:28 -0300 |
|---|---|---|
| committer | Renato Westphal <renato@opensourcerouting.org> | 2021-10-12 17:30:51 -0300 |
| commit | 4a0167fee54750693c7d20c84636bcef34e1ebb8 (patch) | |
| tree | 0532203befea3efd5baf2bc7c09a82fc49131104 /lib/command_graph.c | |
| parent | 38e7e55306fd242cd4cd7a1113cefe28284f57a8 (diff) | |
ospfd: fix flushing of Grace-LSAs on broadcast interfaces
The ospfd opaque LSA infrastruture has an issue where it can't store
different versions of the same Type-9 LSA for different interfaces.
When flushing the self-originated Grace-LSAs upon exiting from the GR
mode, the code was looking up the single self-originated Grace-LSA
from the LSDB, setting its age to MaxAge and sending it out on all
interfaces.
The problem is that Grace-LSAs sent on broadcast interfaces have
their own unique "IP interface address" TLV that is used to identify
the restarting router. That way, just reusing the same Grace-LSA for
all interfaces doesn't work.
Fix this by generating a new Grace-LSA with its age manually set
to MaxAge whenever one needs to be flushed. This will allow the "IP
interface address" TLV to be set correctly and make GR work even in
the presence of multiple broadcast interfaces.
In the long term, the opaque LSA infrastructure should be updated
to support Type-9 link-local LSAs correctly so that we don't need to
resort to hacks like this.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'lib/command_graph.c')
0 files changed, 0 insertions, 0 deletions
