bgpd: Turn off default-originate timer

If the neighbor is not configured with `neighbor X default-originate route-map ...`,
then this timer is useless.

Change the logic to be it disabled by default, but enabled automatically once the
route-map is configured for default-originate command.

Automatically assigned timer value is as before, 5 seconds.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
Donatas Abraitis 2024-09-03 16:09:26 +03:00
parent d12306d3e0
commit 5b24d3b223
2 changed files with 13 additions and 5 deletions

View File

@ -8425,8 +8425,7 @@ DEFPY (bgp_def_originate_eval,
{
VTY_DECLVAR_CONTEXT(bgp, bgp);
bgp->rmap_def_originate_eval_timer =
no ? RMAP_DEFAULT_ORIGINATE_EVAL_TIMER : timer;
bgp->rmap_def_originate_eval_timer = no ? 0 : timer;
if (bgp->t_rmap_def_originate_eval)
EVENT_OFF(bgp->t_rmap_def_originate_eval);
@ -19778,8 +19777,9 @@ int bgp_config_write(struct vty *vty)
bgp->condition_check_period);
/* default-originate timer configuration */
if (bgp->rmap_def_originate_eval_timer !=
RMAP_DEFAULT_ORIGINATE_EVAL_TIMER)
if (bgp->rmap_def_originate_eval_timer &&
bgp->rmap_def_originate_eval_timer !=
RMAP_DEFAULT_ORIGINATE_EVAL_TIMER)
vty_out(vty, " bgp default-originate timer %u\n",
bgp->rmap_def_originate_eval_timer);

View File

@ -3520,7 +3520,7 @@ static struct bgp *bgp_create(as_t *as, const char *name,
bgp_addpath_init_bgp_data(&bgp->tx_addpath);
bgp->fast_convergence = false;
bgp->llgr_stale_time = BGP_DEFAULT_LLGR_STALE_TIME;
bgp->rmap_def_originate_eval_timer = RMAP_DEFAULT_ORIGINATE_EVAL_TIMER;
bgp->rmap_def_originate_eval_timer = 0;
#ifdef ENABLE_BGP_VNC
if (inst_type != BGP_INSTANCE_TYPE_VRF) {
@ -5783,6 +5783,10 @@ int peer_default_originate_set(struct peer *peer, afi_t afi, safi_t safi,
subgrp = peer_subgroup(peer, afi, safi);
if (rmap) {
if (!peer->bgp->rmap_def_originate_eval_timer)
peer->bgp->rmap_def_originate_eval_timer =
RMAP_DEFAULT_ORIGINATE_EVAL_TIMER;
if (!peer->default_rmap[afi][safi].name
|| strcmp(rmap, peer->default_rmap[afi][safi].name) != 0) {
struct route_map *map = NULL;
@ -5865,6 +5869,10 @@ int peer_default_originate_set(struct peer *peer, afi_t afi, safi_t safi,
if (rmap) {
struct route_map *map = NULL;
if (!member->bgp->rmap_def_originate_eval_timer)
member->bgp->rmap_def_originate_eval_timer =
RMAP_DEFAULT_ORIGINATE_EVAL_TIMER;
if (member->default_rmap[afi][safi].name) {
map = route_map_lookup_by_name(
member->default_rmap[afi][safi].name);