summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_vty.c
diff options
context:
space:
mode:
authorpaul <paul>2006-06-15 18:40:49 +0000
committerpaul <paul>2006-06-15 18:40:49 +0000
commitdd24e2a2fdd69ca98abae9b73c1eb62eb31f1cbf (patch)
tree6ba1ebcbd6c5cd6f5e3df048e576d514f60229eb /ospfd/ospf_vty.c
parenta5b248191de7254017608a8aac6f60578d12ad78 (diff)
downloadquagga-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.c15
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);