tag 391040 + patch
stop

Andre Tomt wrote:
> Any hope on getting the fix pushed into Etch? Right now OSPFd is
> basically unusable.

If so, this bug should be set to a higher priority to make it release
critical.

For the time being, I've prepared a NMU patch to apply the fix for this
bug. If Christian has no comments or objections over the next few days
I'll be happy to upload it.

Cheers

-- 
Matt Brown
Debian Developer
[EMAIL PROTECTED]
Mob +64 21 611 544 www.mattb.net.nz
diff -u quagga-0.99.5/debian/changelog quagga-0.99.5/debian/changelog
--- quagga-0.99.5/debian/changelog
+++ quagga-0.99.5/debian/changelog
@@ -1,3 +1,10 @@
+quagga (0.99.5-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Backport CVS fix for an OSPF DD Exchange regression. (Closes: #391040) 
+
+ -- Matt Brown <[EMAIL PROTECTED]>  Wed, 25 Oct 2006 23:58:37 +1300
+
 quagga (0.99.5-2) unstable; urgency=medium
 
   * Added LSB info section to initscript. 
only in patch2:
unchanged:
--- quagga-0.99.5.orig/debian/patches/100_ospfd_ddexchange_regression.dpatch
+++ quagga-0.99.5/debian/patches/100_ospfd_ddexchange_regression.dpatch
@@ -0,0 +1,76 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 100_ospfd_ddexchange_regression.dpatch by <[EMAIL PROTECTED]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Backport a fix for an OSPF regression introduced in 0.99.5
+## DP: See Debian Bug #391040 and
+## DP: http://bugzilla.quagga.net/show_bug.cgi?id=304
+## DP: for details
+
[EMAIL PROTECTED]@
+
+--- a/ospfd/ChangeLog
++++ b/ospfd/ChangeLog
+@@ -1,3 +1,11 @@
++2006-08-28 Andy Gay <[EMAIL PROTECTED]>
++
++	* ospf_packet.c: (ospf_make_db_desc) Assert added with More-bit
++	  fixes does not hold up with addition of Ogier DB-Exchange
++	  optimisation, which can empty the db-summary list in between
++	  sent DD packets. Remove assert, update More-bit always when
++	  in Exchange.
++
+ 2006-08-27 J.J. Krabbendam <[EMAIL PROTECTED]>
+ 
+ 	* ospfd.c: (ospf_finish_final) default redistribute should be
+--- a/ospfd/ospf_packet.c
++++ b/ospfd/ospf_packet.c
+@@ -2712,25 +2712,9 @@ ospf_make_db_desc (struct ospf_interface
+   /* Set DD Sequence Number. */
+   stream_putl (s, nbr->dd_seqnum);
+ 
++  /* shortcut unneeded walk of (empty) summary LSDBs */
+   if (ospf_db_summary_isempty (nbr))
+-    {
+-      /* Sanity check:
+-       *
+-       * Must be here either:
+-       * - Initial DBD (ospf_nsm.c)
+-       *   - M must be set
+-       * or
+-       * - finishing Exchange, and DB-Summary list empty
+-       *   - from ospf_db_desc_proc()
+-       *   - M must not be set
+-       */
+-      if (nbr->state >= NSM_Exchange)
+-	assert (!IS_SET_DD_M(nbr->dd_flags));
+-      else
+-        assert (IS_SET_DD_M(nbr->dd_flags));
+-
+-      return length;
+-    }
++    goto empty;
+ 
+   /* Describe LSA Header from Database Summary List. */
+   lsdb = &nbr->db_sum;
+@@ -2785,9 +2769,17 @@ ospf_make_db_desc (struct ospf_interface
+   /* Update 'More' bit */
+   if (ospf_db_summary_isempty (nbr))
+     {
+-      UNSET_FLAG (nbr->dd_flags, OSPF_DD_FLAG_M);
+-      /* Rewrite DD flags */
+-      stream_putc_at (s, pp, nbr->dd_flags);
++empty:
++      if (nbr->state >= NSM_Exchange)
++        {
++          UNSET_FLAG (nbr->dd_flags, OSPF_DD_FLAG_M);
++          /* Rewrite DD flags */
++          stream_putc_at (s, pp, nbr->dd_flags);
++        }
++      else
++        {
++          assert (IS_SET_DD_M(nbr->dd_flags));
++        }
+     }
+   return length;
+ }

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to