diff options
author | paul <paul> | 2006-06-15 18:40:49 +0000 |
---|---|---|
committer | paul <paul> | 2006-06-15 18:40:49 +0000 |
commit | dd24e2a2fdd69ca98abae9b73c1eb62eb31f1cbf (patch) | |
tree | 6ba1ebcbd6c5cd6f5e3df048e576d514f60229eb /ospfd/ospf_vty.c | |
parent | a5b248191de7254017608a8aac6f60578d12ad78 (diff) | |
download | quagga-dd24e2a2fdd69ca98abae9b73c1eb62eb31f1cbf.tar.bz2 quagga-dd24e2a2fdd69ca98abae9b73c1eb62eb31f1cbf.tar.xz |
[ospfd] Fix multicast membership drop bug
2006-06-15 Paul Jakma <paul.jakma@sun.com>
* Reported by Milan Koci
* ospf_interface.h: (struct ospf_if_info) Add reference counts
for multicast group memberships. Add various macros to help
manipulate/check membership state.
* ospf_interface.c: (ospf_if_set_multicast) Maintain the
ospf_if_info reference counts, and only actually drop
memberships if it hits 0, to avoid losing membership when
OSPF is disabled on an interface with multiple active OSPF
interfaces.
* ospf_packet.c: (ospf_{hello,read}) Use the new macros to
check/set
multicast membership.
* ospf_vty.c: (show_ip_ospf_interface_sub) ditto.
Diffstat (limited to 'ospfd/ospf_vty.c')
-rw-r--r-- | ospfd/ospf_vty.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 8d6ff31f..10580ab7 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -2811,12 +2811,15 @@ show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf, } vty_out (vty, " Multicast group memberships:"); - if (CHECK_FLAG(oi->multicast_memberships, MEMBER_ALLROUTERS)) - vty_out (vty, " OSPFAllRouters"); - if (CHECK_FLAG(oi->multicast_memberships, MEMBER_DROUTERS)) - vty_out (vty, " OSPFDesignatedRouters"); - if (!CHECK_FLAG(oi->multicast_memberships, - MEMBER_ALLROUTERS|MEMBER_DROUTERS)) + if (OI_MEMBER_CHECK(oi, MEMBER_ALLROUTERS) + || OI_MEMBER_CHECK(oi, MEMBER_DROUTERS)) + { + if (OI_MEMBER_CHECK(oi, MEMBER_ALLROUTERS)) + vty_out (vty, " OSPFAllRouters"); + if (OI_MEMBER_CHECK(oi, MEMBER_DROUTERS)) + vty_out (vty, " OSPFDesignatedRouters"); + } + else vty_out (vty, " <None>"); vty_out (vty, "%s", VTY_NEWLINE); |