summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_updgrp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/bgpd/bgp_updgrp.c b/bgpd/bgp_updgrp.c
index 6760b27cba..a0e4a5d9e7 100644
--- a/bgpd/bgp_updgrp.c
+++ b/bgpd/bgp_updgrp.c
@@ -973,7 +973,8 @@ update_subgroup_find (struct update_group *updgrp, struct peer_af *paf)
UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
{
- if (subgrp->version != version)
+ if (subgrp->version != version ||
+ CHECK_FLAG(subgrp->sflags, SUBGRP_STATUS_DEFAULT_ORIGINATE))
continue;
/*
@@ -1044,6 +1045,10 @@ update_subgroup_can_merge_into (struct update_subgroup *subgrp,
if (subgrp->version != target->version)
return 0;
+ if (CHECK_FLAG(subgrp->sflags, SUBGRP_STATUS_DEFAULT_ORIGINATE) !=
+ CHECK_FLAG(target->sflags, SUBGRP_STATUS_DEFAULT_ORIGINATE))
+ return 0;
+
/*
* If there are any adv entries on the target, then its adj-out (the
* set of advertised routes) does not match that of the other