patch from Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>

[zebra 14599] PATCH: permit [no]multicast command for (yet) inactive interfaces
This commit is contained in:
paul 2002-12-13 20:52:52 +00:00
parent 727d104b15
commit 48b33aaf70

View file

@ -182,6 +182,14 @@ if_addr_wakeup (struct interface *ifp)
void void
if_add_update (struct interface *ifp) if_add_update (struct interface *ifp)
{ {
struct zebra_if *if_data;
if_data = ifp->info;
if (if_data->multicast == IF_ZEBRA_MULTICAST_ON)
if_set_flags (ifp, IFF_MULTICAST);
else if (if_data->multicast == IF_ZEBRA_MULTICAST_OFF)
if_unset_flags (ifp, IFF_MULTICAST);
zebra_interface_add_update (ifp); zebra_interface_add_update (ifp);
if (! CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE)) if (! CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE))
@ -739,13 +747,16 @@ DEFUN (multicast,
struct zebra_if *if_data; struct zebra_if *if_data;
ifp = (struct interface *) vty->index; ifp = (struct interface *) vty->index;
ret = if_set_flags (ifp, IFF_MULTICAST); if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE))
if (ret < 0)
{ {
vty_out (vty, "Can't set multicast flag%s", VTY_NEWLINE); ret = if_set_flags (ifp, IFF_MULTICAST);
return CMD_WARNING; if (ret < 0)
{
vty_out (vty, "Can't set multicast flag%s", VTY_NEWLINE);
return CMD_WARNING;
}
if_refresh (ifp);
} }
if_refresh (ifp);
if_data = ifp->info; if_data = ifp->info;
if_data->multicast = IF_ZEBRA_MULTICAST_ON; if_data->multicast = IF_ZEBRA_MULTICAST_ON;
@ -763,13 +774,16 @@ DEFUN (no_multicast,
struct zebra_if *if_data; struct zebra_if *if_data;
ifp = (struct interface *) vty->index; ifp = (struct interface *) vty->index;
ret = if_unset_flags (ifp, IFF_MULTICAST); if (CHECK_FLAG (ifp->status, ZEBRA_INTERFACE_ACTIVE))
if (ret < 0)
{ {
vty_out (vty, "Can't unset multicast flag%s", VTY_NEWLINE); ret = if_unset_flags (ifp, IFF_MULTICAST);
return CMD_WARNING; if (ret < 0)
{
vty_out (vty, "Can't unset multicast flag%s", VTY_NEWLINE);
return CMD_WARNING;
}
if_refresh (ifp);
} }
if_refresh (ifp);
if_data = ifp->info; if_data = ifp->info;
if_data->multicast = IF_ZEBRA_MULTICAST_OFF; if_data->multicast = IF_ZEBRA_MULTICAST_OFF;