mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-15 02:00:24 +00:00
Merge pull request #2978 from ton31337/fix/default_originate_after_second_enter
osfpd: Install default route after second try instantly
This commit is contained in:
commit
fc81954dd1
@ -8201,6 +8201,8 @@ DEFUN (no_ospf_redistribute_source,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
|
|
||||||
ospf_routemap_unset(red);
|
ospf_routemap_unset(red);
|
||||||
|
ospf_redist_del(ospf, source, 0);
|
||||||
|
|
||||||
return ospf_redistribute_unset(ospf, source, 0);
|
return ospf_redistribute_unset(ospf, source, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8315,6 +8317,8 @@ DEFUN (no_ospf_redistribute_instance_source,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
|
|
||||||
ospf_routemap_unset(red);
|
ospf_routemap_unset(red);
|
||||||
|
ospf_redist_del(ospf, source, instance);
|
||||||
|
|
||||||
return ospf_redistribute_unset(ospf, source, instance);
|
return ospf_redistribute_unset(ospf, source, instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8447,6 +8451,8 @@ DEFUN (no_ospf_default_information_originate,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
|
|
||||||
ospf_routemap_unset(red);
|
ospf_routemap_unset(red);
|
||||||
|
ospf_redist_del(ospf, DEFAULT_ROUTE, 0);
|
||||||
|
|
||||||
return ospf_redistribute_default_unset(ospf);
|
return ospf_redistribute_default_unset(ospf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -740,8 +740,6 @@ int ospf_redistribute_unset(struct ospf *ospf, int type,
|
|||||||
zlog_debug("Redistribute[%s][%d] vrf id %u: Stop",
|
zlog_debug("Redistribute[%s][%d] vrf id %u: Stop",
|
||||||
ospf_redist_string(type), instance, ospf->vrf_id);
|
ospf_redist_string(type), instance, ospf->vrf_id);
|
||||||
|
|
||||||
ospf_redist_del(ospf, type, instance);
|
|
||||||
|
|
||||||
/* Remove the routes from OSPF table. */
|
/* Remove the routes from OSPF table. */
|
||||||
ospf_redistribute_withdraw(ospf, type, instance);
|
ospf_redistribute_withdraw(ospf, type, instance);
|
||||||
|
|
||||||
@ -755,30 +753,17 @@ int ospf_redistribute_unset(struct ospf *ospf, int type,
|
|||||||
int ospf_redistribute_default_set(struct ospf *ospf, int originate, int mtype,
|
int ospf_redistribute_default_set(struct ospf *ospf, int originate, int mtype,
|
||||||
int mvalue)
|
int mvalue)
|
||||||
{
|
{
|
||||||
struct ospf_redist *red;
|
|
||||||
|
|
||||||
ospf->default_originate = originate;
|
ospf->default_originate = originate;
|
||||||
|
|
||||||
red = ospf_redist_add(ospf, DEFAULT_ROUTE, 0);
|
|
||||||
red->dmetric.type = mtype;
|
|
||||||
red->dmetric.value = mvalue;
|
|
||||||
|
|
||||||
ospf_external_add(ospf, DEFAULT_ROUTE, 0);
|
ospf_external_add(ospf, DEFAULT_ROUTE, 0);
|
||||||
|
|
||||||
if (ospf_is_type_redistributed(ospf, DEFAULT_ROUTE, 0)) {
|
if (ospf_is_type_redistributed(ospf, DEFAULT_ROUTE, 0))
|
||||||
/* if ospf->default_originate changes value, is calling
|
|
||||||
ospf_external_lsa_refresh_default sufficient to implement
|
|
||||||
the change? */
|
|
||||||
ospf_external_lsa_refresh_default(ospf);
|
|
||||||
|
|
||||||
if (IS_DEBUG_OSPF(zebra, ZEBRA_REDISTRIBUTE))
|
if (IS_DEBUG_OSPF(zebra, ZEBRA_REDISTRIBUTE))
|
||||||
zlog_debug(
|
zlog_debug(
|
||||||
"Redistribute[%s]: Refresh Type[%d], Metric[%d]",
|
"Redistribute[%s]: Refresh Type[%d], Metric[%d]",
|
||||||
ospf_redist_string(DEFAULT_ROUTE),
|
ospf_redist_string(DEFAULT_ROUTE),
|
||||||
metric_type(ospf, DEFAULT_ROUTE, 0),
|
metric_type(ospf, DEFAULT_ROUTE, 0),
|
||||||
metric_value(ospf, DEFAULT_ROUTE, 0));
|
metric_value(ospf, DEFAULT_ROUTE, 0));
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
zclient_redistribute_default(ZEBRA_REDISTRIBUTE_DEFAULT_ADD, zclient,
|
zclient_redistribute_default(ZEBRA_REDISTRIBUTE_DEFAULT_ADD, zclient,
|
||||||
ospf->vrf_id);
|
ospf->vrf_id);
|
||||||
@ -788,6 +773,8 @@ int ospf_redistribute_default_set(struct ospf *ospf, int originate, int mtype,
|
|||||||
metric_type(ospf, DEFAULT_ROUTE, 0),
|
metric_type(ospf, DEFAULT_ROUTE, 0),
|
||||||
metric_value(ospf, DEFAULT_ROUTE, 0));
|
metric_value(ospf, DEFAULT_ROUTE, 0));
|
||||||
|
|
||||||
|
ospf_external_lsa_refresh_default(ospf);
|
||||||
|
|
||||||
if (ospf->router_id.s_addr == 0)
|
if (ospf->router_id.s_addr == 0)
|
||||||
ospf->external_origin |= (1 << DEFAULT_ROUTE);
|
ospf->external_origin |= (1 << DEFAULT_ROUTE);
|
||||||
else
|
else
|
||||||
@ -805,7 +792,6 @@ int ospf_redistribute_default_unset(struct ospf *ospf)
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
|
|
||||||
ospf->default_originate = DEFAULT_ORIGINATE_NONE;
|
ospf->default_originate = DEFAULT_ORIGINATE_NONE;
|
||||||
ospf_redist_del(ospf, DEFAULT_ROUTE, 0);
|
|
||||||
|
|
||||||
zclient_redistribute_default(ZEBRA_REDISTRIBUTE_DEFAULT_DELETE, zclient,
|
zclient_redistribute_default(ZEBRA_REDISTRIBUTE_DEFAULT_DELETE, zclient,
|
||||||
ospf->vrf_id);
|
ospf->vrf_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user