components/quagga/patches/35-ospfd-spf-sort.patch
author Rich Burridge <rich.burridge@oracle.com>
Mon, 19 Dec 2011 14:41:24 -0800
changeset 629 daaab66f7276
parent 417 7c10b5cba79b
permissions -rw-r--r--
7117296 legacy actions need some love
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
417
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     1
commit 7591d8b862439dfae8b4b16d148ce567b6ff8cb7
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     2
Author: Paul Jakma <[email protected]>
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     3
Date:   Mon Aug 6 18:52:45 2007 +0000
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     4
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     5
    [ospfd] Fix bad SPF calculation on some topologies - incorrect sorting
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     6
    
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     7
    2007-08-07 Atis Elsts <[email protected]>
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     8
    
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
     9
    	* ospf_spf.c: (ospf_spf_next) Sort heap in correct direction
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    10
    	  after vertex cost is changed, thus fixing incorrect SPF
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    11
    	  calculation on certain topologies.
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    12
    	* lib/pqueue.{c,h}: Export trickle_up
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    13
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    14
diff --git a/lib/pqueue.c b/lib/pqueue.c
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    15
index a974a49..12a779f 100644
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    16
--- lib/pqueue.c
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    17
+++ lib/pqueue.c
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    18
@@ -42,7 +42,7 @@ Boston, MA 02111-1307, USA.  */
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    19
 #define RIGHT_OF(x) (2 * x + 2)
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    20
 #define HAVE_CHILD(x,q) (x < (q)->size / 2)
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    21
 
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    22
-static void
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    23
+void
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    24
 trickle_up (int index, struct pqueue *queue)
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    25
 {
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    26
   void *tmp;
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    27
diff --git a/lib/pqueue.h b/lib/pqueue.h
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    28
index 1f3201b..be37f98 100644
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    29
--- lib/pqueue.h
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    30
+++ lib/pqueue.h
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    31
@@ -40,5 +40,6 @@ extern void pqueue_enqueue (void *data, struct pqueue *queue);
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    32
 extern void *pqueue_dequeue (struct pqueue *queue);
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    33
 
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    34
 extern void trickle_down (int index, struct pqueue *queue);
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    35
+extern void trickle_up (int index, struct pqueue *queue);
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    36
 
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    37
 #endif /* _ZEBRA_PQUEUE_H */
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    38
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    39
index bb0e908..422208e 100644
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    40
--- ospfd/ChangeLog
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    41
+++ ospfd/ChangeLog
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    42
@@ -1,3 +1,9 @@
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    43
+2007-08-07 Atis Elsts <[email protected]>
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    44
+
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    45
+	* ospf_spf.c: (ospf_spf_next) Sort heap in correct direction
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    46
+	  after vertex cost is changed, thus fixing incorrect SPF
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    47
+	  calculation on certain topologies.
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    48
+
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    49
 2007-08-06 Paul Jakma <[email protected]>
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    50
 
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    51
 	* ospf_lsa.c: (router_lsa_flags) Bug #331, NSSA regression caused
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    52
diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    53
index 51e3383..41288f1 100644
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    54
--- ospfd/ospf_spf.c
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    55
+++ ospfd/ospf_spf.c
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    56
@@ -896,9 +896,12 @@ ospf_spf_next (struct vertex *v, struct ospf_area *area,
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    57
                * will flush the old parents
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    58
                */
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    59
               if (ospf_nexthop_calculation (area, v, w, l, distance))
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    60
-                /* Decrease the key of the node in the heap,
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    61
-                 * re-sort the heap. */
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    62
-                trickle_down (w_lsa->stat, candidate);
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    63
+                /* Decrease the key of the node in the heap.
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    64
+                 * trickle-sort it up towards root, just in case this
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    65
+                 * node should now be the new root due the cost change. 
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    66
+                 * (pqueu_{de,en}queue 
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    67
+                 */
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    68
+                trickle_up (w_lsa->stat, candidate);
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    69
             }
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    70
         } /* end W is already on the candidate list */
7c10b5cba79b 7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff changeset
    71
     } /* end loop over the links in V's LSA */