summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_gr.c
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2023-03-01 17:31:56 -0300
committerRenato Westphal <renato@opensourcerouting.org>2023-03-02 19:38:03 -0300
commite23e56831958c3ae373a56a13ab8e0fc46fe6413 (patch)
treee877e18ee01093cdaeb283e9db0f935115112f03 /ospf6d/ospf6_gr.c
parentd7917c25419c02724181925e04c5dc267c5d24b2 (diff)
ospf6d: update DR election to handle GR corner case
Consider the case where a DR router is performing a graceful restart, and all neighbors attached to the DR network have their priorities set to zero. According to RFC 3623, the router should reclaim its DR status while coming back up once it receives a Hello packet from a neighbor listing the router as the DR, and the associated interface is in Waiting state. The problem arises when the DR election starts. Since the router is already elected the DR, and no BDR will be elected (since all neighbors have their priorities set to zero), the AdjOk event won't be triggered at the end of the DR election as it would normally happen. That causes all neighbors reachable over the broadcast interface to get stuck in the 2-Way state. Fix this corner case by always triggering the AdjOk event at the end of the DR election process when a GR is in progress. Triggering the AdjOk event when not necessary should never be a problem as the neighbor FSM is already prepared to deal with that. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'ospf6d/ospf6_gr.c')
0 files changed, 0 insertions, 0 deletions