mirror_frr/ospfd
Renato Westphal 4a0167fee5 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>
2021-10-12 17:30:51 -03:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
ChangeLog.opaque.txt Initial revision 2003-02-03 16:31:16 +00:00
Makefile build: non-recursive ospf* 2017-08-04 11:09:50 +02:00
ospf_abr.c ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
ospf_abr.h ospfd: fix NSSA translator 2020-11-18 23:23:14 -08:00
ospf_api.c ospfd: Correct Coverity defects 2021-05-19 09:48:54 +02:00
ospf_api.h ospfd: Correct Coverity defects 2021-05-19 09:48:54 +02:00
ospf_apiserver.c ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_apiserver.h ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_asbr.c lib,ospfd,ospf6d: remove duplicated function 2021-07-09 07:55:25 -03:00
ospf_asbr.h ospfd: install Type-7 when NSSA area is configured after redistribution 2021-04-12 09:34:20 -04:00
ospf_ase.c ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
ospf_ase.h *: reindent 2017-07-17 14:04:07 +02:00
ospf_bfd.c lib: remove enabled flag for bfd sessions 2021-04-22 16:39:29 +03:00
ospf_bfd.h ospfd: rework BFD integration 2021-03-23 10:18:42 -03:00
ospf_dump_api.c ospfd: replace inet_ntoa 2020-10-22 13:37:25 -04:00
ospf_dump_api.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
ospf_dump.c ospfd: adjust log config for GR 2021-07-05 11:43:02 -03:00
ospf_dump.h ospfd: adjust log config for GR 2021-07-05 11:43:02 -03:00
ospf_errors.c ospfd: Add Segment Routing Local Block 2020-08-20 14:37:40 +02:00
ospf_errors.h ospfd: Add Segment Routing Local Block 2020-08-20 14:37:40 +02:00
ospf_ext.c ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_ext.h ospfd: Add Segment Routing Local Block 2020-08-20 14:37:40 +02:00
ospf_flood.c ospfd: Summarised External LSA is not flushed in one scenario 2021-08-17 02:15:42 -07:00
ospf_flood.h ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
ospf_gr_helper.c ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_gr.c ospfd: fix flushing of Grace-LSAs on broadcast interfaces 2021-10-12 17:30:51 -03:00
ospf_gr.h ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
ospf_ia.c ospfd: replace inet_ntoa 2020-10-22 13:37:25 -04:00
ospf_ia.h *: reindent 2017-07-17 14:04:07 +02:00
ospf_interface.c *: cleanup interface loopback/vrf check 2021-09-30 12:31:05 +03:00
ospf_interface.h ospfd: Cleanup ospf_interface.h to work with our standards 2021-08-06 10:46:48 -04:00
ospf_ism.c *: require semicolon after DEFINE_HOOK & co. 2021-03-17 06:18:17 +01:00
ospf_ism.h *: require semicolon after DEFINE_HOOK & co. 2021-03-17 06:18:17 +01:00
ospf_ldp_sync.c ospfd: Prevent sending of uninited data to zebra 2021-01-30 14:13:34 -05:00
ospf_ldp_sync.h ldpd, isisd, ospfd: Remove periodic ldp-sync hello message 2020-12-09 14:11:38 -05:00
ospf_lsa.c ospfd: RFC conformance test case 25.23 issue fix 2021-09-03 06:44:56 -07:00
ospf_lsa.h ospfd: RFC conformance test case 25.23 issue fix 2021-09-03 06:44:56 -07:00
ospf_lsdb.c ospfd: replace pqueue_* with DECLARE_SKIPLIST 2019-04-27 19:33:45 +02:00
ospf_lsdb.h ospfd: replace pqueue_* with DECLARE_SKIPLIST 2019-04-27 19:33:45 +02:00
ospf_main.c *: Drop break after using frr_help_exit() in switch/case 2021-08-25 10:49:05 +03:00
ospf_memory.c *: require semicolon after DEFINE_MTYPE & co 2021-03-17 06:18:17 +01:00
ospf_memory.h *: require semicolon after DEFINE_MTYPE & co 2021-03-17 06:18:17 +01:00
ospf_neighbor.c ospfd: rename the graceful restart header 2021-07-05 11:43:02 -03:00
ospf_neighbor.h ospfd: rename the graceful restart header 2021-07-05 11:43:02 -03:00
ospf_network.c ospfd: don't exit when socket is not created 2021-07-27 16:10:35 +03:00
ospf_network.h ospfd: basic support for VRF NETNS backend 2018-02-27 11:11:24 +01:00
ospf_nsm.c ospfd: ospf nbr in full although mismatch in hello packet contents 2021-10-06 10:04:10 -07:00
ospf_nsm.h ospfd: ospf nbr in full although mismatch in hello packet contents 2021-10-06 10:04:10 -07:00
ospf_opaque.c Merge pull request #9763 from ton31337/fix/more_thread_null 2021-10-12 11:49:46 -04:00
ospf_opaque.h ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_packet.c Merge pull request #9781 from opensourcerouting/ospfd-gr-dr-fix 2021-10-12 10:58:39 -04:00
ospf_packet.h ospfd: fix typos 2020-10-07 01:53:13 -07:00
ospf_ri.c ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_ri.h ospfd: Correct Coverity defects 2021-05-19 09:48:54 +02:00
ospf_route.c ospfd: Fix quick interface down up event handling in ospf 2021-05-25 14:43:40 -04:00
ospf_route.h ospfd: Fix quick interface down up event handling in ospf 2021-05-25 14:43:40 -04:00
ospf_routemap_nb_config.c *: make sure config.h or zebra.h is first 2021-04-23 12:06:35 +02:00
ospf_routemap_nb.c *: make sure config.h or zebra.h is first 2021-04-23 12:06:35 +02:00
ospf_routemap_nb.h ospfd: North-bound implementation for ospfd rmaps 2021-03-30 22:59:30 +03:00
ospf_routemap.c ospfd: fix routemap update 2021-06-17 19:31:03 +03:00
ospf_snmp.c build: make builddir include path consistent 2021-04-21 15:42:33 +02:00
ospf_spf.c ospfd: correctly cleanup spf data 2021-08-31 13:41:40 +03:00
ospf_spf.h ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
ospf_sr.c *: fix for -Wstrict-prototypes 2021-09-02 13:00:35 +02:00
ospf_sr.h ospfd, doc, tests: combined SRGB/SRLB command 2021-06-04 17:22:38 +02:00
ospf_te.c ospfd: fix display of plain-text data on "show ... json" commands 2021-10-08 10:03:01 -03:00
ospf_te.h ospfd: Add Link-State support 2021-03-23 15:39:29 +01:00
ospf_ti_lfa.c *: Replace IPV4_MAX_PREFIXLEN to IPV4_MAX_BITLEN 2021-07-01 17:44:09 +03:00
ospf_ti_lfa.h ospfd: Add support for TI-LFA node protection 2021-01-19 15:32:13 +00:00
ospf_vty.c ospfd: rename the "graceful-restart helper-only" command 2021-09-21 17:42:03 -03:00
ospf_vty.h ospfd: TI-LFA basic infrastructure and algorithms 2021-01-19 15:32:13 +00:00
ospf_zebra.c ospfd: remove unnecessary memory allocation 2021-07-21 13:49:52 +03:00
ospf_zebra.h ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
OSPF-ALIGNMENT.txt *: Remove cvs control points 2017-12-05 17:28:12 -05:00
ospfd.c ospfd: Summary LSA is not originated when process is reset 2021-09-01 23:39:00 -07:00
ospfd.h ospfd: introduce support for Graceful Restart (restarting mode) 2021-07-05 11:43:02 -03:00
subdir.am build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00