diff options
| author | Olivier Dugeon <olivier.dugeon@orange.com> | 2020-10-06 16:42:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-06 16:42:41 +0200 |
| commit | 24d7ccfabdc707361670dd3c044d6442f24e67cb (patch) | |
| tree | aa9589aed56dc4535fabf125c730c88b7684f8e0 | |
| parent | b0508095f18d376a692bff6da5ca3815ae51eec5 (diff) | |
| parent | 4c63a76a63fd02ae2aa73e4e66b04b37b10fdd99 (diff) | |
Merge pull request #7202 from gromit1811/proposed_fix_7030
ospf6d: Fix flooding of old copies of self-originated LSAs
| -rw-r--r-- | ospf6d/ospf6_flood.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c index b144c6804e..56aac0f21f 100644 --- a/ospf6d/ospf6_flood.c +++ b/ospf6d/ospf6_flood.c @@ -1001,18 +1001,22 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from, * MAXAGEd and not removed.*/ if (OSPF6_LSA_IS_MAXAGE(old) && !OSPF6_LSA_IS_MAXAGE(new)) { - - if (is_debug) - zlog_debug( - "%s: Current copy of LSA %s is MAXAGE, but new has recent Age.", - old->name, __func__); - - ospf6_lsa_purge(old); if (new->header->adv_router - != from->ospf6_if->area->ospf6->router_id) + != from->ospf6_if->area->ospf6->router_id) { + if (is_debug) + zlog_debug( + "%s: Current copy of LSA %s is MAXAGE, but new has recent age, flooding/installing.", + old->name, __PRETTY_FUNCTION__); + ospf6_lsa_purge(old); ospf6_flood(from, new); - - ospf6_install_lsa(new); + ospf6_install_lsa(new); + } else { + if (is_debug) + zlog_debug( + "%s: Current copy of self-originated LSA %s is MAXAGE, but new has recent age, ignoring new.", + old->name, __PRETTY_FUNCTION__); + ospf6_lsa_delete(new); + } return; } |
