]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Merge remote-tracking branch 'origin/master' into thread-next
authorOndrej Zajicek <santiago@crfreenet.org>
Tue, 10 Jun 2025 15:10:24 +0000 (17:10 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Tue, 10 Jun 2025 15:10:24 +0000 (17:10 +0200)
1  2 
.gitlab-ci.yml
misc/gitlab/data.yml.j2
proto/bgp/bgp.c

diff --cc .gitlab-ci.yml
Simple merge
Simple merge
diff --cc proto/bgp/bgp.c
index 7c75978c5d9357e7f925ee52ca874870c5b92794,d38666fab1640e33ec0e7b69b88c3bc83de22245..a21302b41695e6103024177fc3a83feec1706b40
@@@ -3214,24 -2830,25 +3214,25 @@@ bgp_channel_reconfigure(struct channel 
    if ((new->gw_mode != old->gw_mode) ||
        (new->next_hop_prefer != old->next_hop_prefer) ||
        (new->aigp != old->aigp) ||
-       (new->cost != old->cost))
+       (new->cost != old->cost) ||
+       (new->c.preference != old->c.preference))
    {
 -    /* Route refresh needed, these attributes are set by BGP itself
 -     * and even if import table exists, we can't use it */
 -
 -    /* Route refresh impossible, restart is needed */
 -    if ((c->c.channel_state == CS_UP) && !p->route_refresh)
 -      return 0;
 -
 -    /* Force ROUTE_REFRESH with import table; otherwise
 -     * it will be forced by import_changed set to 1 later */
 -    if (c->c.in_table && (c->c.channel_state == CS_UP))
 -      bgp_schedule_packet(p->conn, c, PKT_ROUTE_REFRESH);
 -
 -    /* Note that preference is already handled in channel_reconfigure(),
 -       but we need it handle again here for the ROUTE_REFRESH trigger */
 +    /* If import table is active we have to flush it */
 +    if ((c->c.in_keep & RIK_PREFILTER) == RIK_PREFILTER)
 +    {
 +      if (p->route_refresh)
 +      {
 +      if (c->c.channel_state == CS_UP)
 +        bgp_schedule_packet(p->conn, c, PKT_ROUTE_REFRESH);
 +      }
 +      else
 +      /* Route refresh not possible, restart needed */
 +      return 0;
 +    }
  
 -    *import_changed = 1;
 +    /* Otherwise we just do complete reload */
 +    else
 +      *import_changed = 1;
    }
  
    if (!ipa_equal(new->next_hop_addr, old->next_hop_addr) ||