Skip to content

Commit

Permalink
Merge pull request #9268 from FRRouting/mergify/bp/stable/8.0/pr-9239
Browse files Browse the repository at this point in the history
ospfd: fix "no ip ospf passive" command (backport #9239)
  • Loading branch information
donaldsharp authored Aug 7, 2021
2 parents c786a08 + ca73177 commit d39abfa
Showing 1 changed file with 29 additions and 28 deletions.
57 changes: 29 additions & 28 deletions ospfd/ospf_vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -375,10 +375,27 @@ static void ospf_passive_interface_default_update(struct ospf *ospf,
ospf_if_set_multicast(oi);
}

static void ospf_passive_interface_update(struct interface *ifp)
static void ospf_passive_interface_update(struct interface *ifp,
struct ospf_if_params *params,
struct in_addr addr, uint8_t newval)
{
struct route_node *rn;

if (OSPF_IF_PARAM_CONFIGURED(params, passive_interface)) {
if (params->passive_interface == newval)
return;

params->passive_interface = newval;
UNSET_IF_PARAM(params, passive_interface);
if (params != IF_DEF_PARAMS(ifp)) {
ospf_free_if_params(ifp, addr);
ospf_if_update_params(ifp, addr);
}
} else {
params->passive_interface = newval;
SET_IF_PARAM(params, passive_interface);
}

/*
* XXX We should call ospf_if_set_multicast on exactly those
* interfaces for which the passive property changed. It is too much
Expand Down Expand Up @@ -457,10 +474,7 @@ DEFUN_HIDDEN (ospf_passive_interface_addr,
params = IF_DEF_PARAMS(ifp);
}

params->passive_interface = OSPF_IF_PASSIVE;
SET_IF_PARAM(params, passive_interface);

ospf_passive_interface_update(ifp);
ospf_passive_interface_update(ifp, params, addr, OSPF_IF_PASSIVE);

return CMD_SUCCESS;
}
Expand Down Expand Up @@ -521,14 +535,7 @@ DEFUN_HIDDEN (no_ospf_passive_interface,
params = IF_DEF_PARAMS(ifp);
}

params->passive_interface = OSPF_IF_ACTIVE;
UNSET_IF_PARAM(params, passive_interface);
if (params != IF_DEF_PARAMS(ifp)) {
ospf_free_if_params(ifp, addr);
ospf_if_update_params(ifp, addr);
}

ospf_passive_interface_update(ifp);
ospf_passive_interface_update(ifp, params, addr, OSPF_IF_ACTIVE);

return CMD_SUCCESS;
}
Expand Down Expand Up @@ -9082,7 +9089,7 @@ DEFUN (ip_ospf_passive,
{
VTY_DECLVAR_CONTEXT(interface, ifp);
int idx_ipv4 = 3;
struct in_addr addr;
struct in_addr addr = {.s_addr = INADDR_ANY};
struct ospf_if_params *params;
int ret;

Expand All @@ -9099,10 +9106,7 @@ DEFUN (ip_ospf_passive,
params = IF_DEF_PARAMS(ifp);
}

params->passive_interface = OSPF_IF_PASSIVE;
SET_IF_PARAM(params, passive_interface);

ospf_passive_interface_update(ifp);
ospf_passive_interface_update(ifp, params, addr, OSPF_IF_PASSIVE);

return CMD_SUCCESS;
}
Expand All @@ -9118,7 +9122,7 @@ DEFUN (no_ip_ospf_passive,
{
VTY_DECLVAR_CONTEXT(interface, ifp);
int idx_ipv4 = 4;
struct in_addr addr;
struct in_addr addr = {.s_addr = INADDR_ANY};
struct ospf_if_params *params;
int ret;

Expand All @@ -9136,14 +9140,7 @@ DEFUN (no_ip_ospf_passive,
params = IF_DEF_PARAMS(ifp);
}

params->passive_interface = OSPF_IF_ACTIVE;
UNSET_IF_PARAM(params, passive_interface);
if (params != IF_DEF_PARAMS(ifp)) {
ospf_free_if_params(ifp, addr);
ospf_if_update_params(ifp, addr);
}

ospf_passive_interface_update(ifp);
ospf_passive_interface_update(ifp, params, addr, OSPF_IF_ACTIVE);

return CMD_SUCCESS;
}
Expand Down Expand Up @@ -11932,7 +11929,11 @@ static int config_write_interface_one(struct vty *vty, struct vrf *vrf)

if (OSPF_IF_PARAM_CONFIGURED(params,
passive_interface)) {
vty_out(vty, " ip ospf passive");
vty_out(vty, " %sip ospf passive",
params->passive_interface
== OSPF_IF_ACTIVE
? "no "
: "");
if (params != IF_DEF_PARAMS(ifp) && rn)
vty_out(vty, " %pI4", &rn->p.u.prefix4);
vty_out(vty, "\n");
Expand Down

0 comments on commit d39abfa

Please sign in to comment.