* bgp_route.c: Make reannouncing prefixes with changed attributes
work again.
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 009f7f9..29114c8 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-23 Hasso Tepper <hasso at quagga.net>
+
+ * bgp_route.c: Make reannouncing prefixes with changed attributes
+ work again.
+
2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
* bgp_vty.c: Deprecate "neighbor transparent-as" and "neighbor
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 156120b..8c8fa52 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -1098,18 +1098,6 @@
new_select = ri;
}
- if ( (! old_select) || old_select != new_select
- || CHECK_FLAG (old_select->flags, BGP_INFO_ATTR_CHANGED))
- {
- if (old_select)
- UNSET_FLAG (old_select->flags, BGP_INFO_SELECTED);
- if (new_select)
- {
- SET_FLAG (new_select->flags, BGP_INFO_SELECTED);
- UNSET_FLAG (new_select->flags, BGP_INFO_ATTR_CHANGED);
- }
- }
-
result->old = old_select;
result->new = new_select;
@@ -1188,6 +1176,14 @@
if (old_select && old_select == new_select)
if (! CHECK_FLAG (old_select->flags, BGP_INFO_ATTR_CHANGED))
continue;
+
+ if (old_select)
+ UNSET_FLAG (old_select->flags, BGP_INFO_SELECTED);
+ if (new_select)
+ {
+ SET_FLAG (new_select->flags, BGP_INFO_SELECTED);
+ UNSET_FLAG (new_select->flags, BGP_INFO_ATTR_CHANGED);
+ }
bgp_process_announce_selected (rsclient, new_select, rn, &attr,
afi, safi);
@@ -1229,6 +1225,15 @@
}
}
+ if (old_select)
+ UNSET_FLAG (old_select->flags, BGP_INFO_SELECTED);
+ if (new_select)
+ {
+ SET_FLAG (new_select->flags, BGP_INFO_SELECTED);
+ UNSET_FLAG (new_select->flags, BGP_INFO_ATTR_CHANGED);
+ }
+
+
/* Check each BGP peer. */
LIST_LOOP (bgp->peer, peer, nn)
{