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