From: Ondrej Zajicek (work) Date: Wed, 10 Jul 2019 16:39:42 +0000 (+0200) Subject: OSPF: Minor fix in graceful restart X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d0e4ba4a3120a7f17a1ca06e342a3af25b95b7a9;p=thirdparty%2Fbird.git OSPF: Minor fix in graceful restart Most LSA origination is blocked in ospf_update_topology(), this fix blocks LSA origination from ospf_rt_spf(). --- diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c index b8345cd70..07d4d757a 100644 --- a/proto/ospf/topology.c +++ b/proto/ospf/topology.c @@ -281,11 +281,15 @@ ospf_do_originate_lsa(struct ospf_proto *p, struct top_hash_entry *en, void *lsa struct top_hash_entry * ospf_originate_lsa(struct ospf_proto *p, struct ospf_new_lsa *lsa) { - struct top_hash_entry *en; + struct top_hash_entry *en = NULL; void *lsa_body = p->lsab; u16 lsa_blen = p->lsab_used; u16 lsa_length = sizeof(struct ospf_lsa_header) + lsa_blen; + /* RFC 3623 2 (1) - do not originate topology LSAs during graceful restart */ + if (p->gr_recovery && (LSA_FUNCTION(lsa->type) <= LSA_FUNCTION(LSA_T_NSSA))) + goto drop; + /* For OSPFv2 Opaque LSAs, LS ID consists of Opaque Type and Opaque ID */ if (ospf_is_v2(p) && lsa_is_opaque(lsa->type)) lsa->id |= (u32) lsa_get_opaque_type(lsa->type) << 24;