[quagga-dev 10443] Re: [PATCH 3/3] ospfd: fix flooding procedure

Joachim Nilsson troglobit at gmail.com
Fri Apr 19 15:52:11 BST 2013


Tested and verified OK.

Signed-off-by: Joachim Nilsson <troglobit at gmail.com>

On 02/20/2013 12:00 PM, Christian Franke wrote:
> An ospf router should accept a new maxage LSA into its lsdb if it has any
> neighbors in state Exchange or Loading. ospfd would however only account
> for neighbors on the same interface which does not seem to be a valid
> optimization.
>
> Signed-off-by: Christian Franke <chris at opensourcerouting.org>
> ---
> Compare with RFC 2328 section 13 (4)
>
>   ospfd/ospf_lsa.c    |    2 +-
>   ospfd/ospf_lsa.h    |    1 +
>   ospfd/ospf_packet.c |    3 +--
>   3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
> index e0e05ab..109a120 100644
> --- a/ospfd/ospf_lsa.c
> +++ b/ospfd/ospf_lsa.c
> @@ -2794,7 +2794,7 @@ ospf_lsa_install (struct ospf *ospf, struct ospf_interface *oi,
>   }
>   
>   
> -static int
> +int
>   ospf_check_nbr_status (struct ospf *ospf)
>   {
>     struct listnode *node, *nnode;
> diff --git a/ospfd/ospf_lsa.h b/ospfd/ospf_lsa.h
> index 9ff2d92..c71877d 100644
> --- a/ospfd/ospf_lsa.h
> +++ b/ospfd/ospf_lsa.h
> @@ -251,6 +251,7 @@ extern u_int32_t lsa_seqnum_increment (struct ospf_lsa *);
>   extern void lsa_header_set (struct stream *, u_char, u_char, struct in_addr,
>   		     struct in_addr);
>   extern struct ospf_neighbor *ospf_nbr_lookup_ptop (struct ospf_interface *);
> +extern int ospf_check_nbr_status (struct ospf *);
>   
>   /* Prototype for LSA primitive. */
>   extern struct ospf_lsa *ospf_lsa_new (void);
> diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
> index d3f1b56..37223fb 100644
> --- a/ospfd/ospf_packet.c
> +++ b/ospfd/ospf_packet.c
> @@ -1833,8 +1833,7 @@ ospf_ls_upd (struct ip *iph, struct ospf_header *ospfh,
>   	 then take the following actions: */
>   
>         if (IS_LSA_MAXAGE (lsa) && !current &&
> -	  (ospf_nbr_count (oi, NSM_Exchange) +
> -	   ospf_nbr_count (oi, NSM_Loading)) == 0)
> +	  ospf_check_nbr_status(oi->ospf))
>   	{
>   	  /* (4a) Response Link State Acknowledgment. */
>   	  ospf_ls_ack_send (nbr, lsa);





More information about the Quagga-dev mailing list