From 9e544a9c4bd13aac6bbeaff235abaaeb07a186b3 Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Fri, 18 Nov 2016 15:39:25 -0200 Subject: [PATCH] ripngd: fix drop of multicast membership when the interface is down When an interface is shut down, ripng_multicast_leave() is called after ifp->flags is updated in ripng_interface_down(). So we shouldn't check if the interface is up in order to proceed with the membership drop. For consistency's sake, don't check for if_is_up() in ripng_multicast_join() as well. In this case, this function is only called when the interface is up, so the check was unnecessary. Signed-off-by: Renato Westphal --- ripngd/ripng_interface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c index c4dec7e7b1..a8742ec9a4 100644 --- a/ripngd/ripng_interface.c +++ b/ripngd/ripng_interface.c @@ -65,7 +65,7 @@ ripng_multicast_join (struct interface *ifp) struct ipv6_mreq mreq; int save_errno; - if (if_is_up (ifp) && if_is_multicast (ifp)) { + if (if_is_multicast (ifp)) { memset (&mreq, 0, sizeof (mreq)); inet_pton(AF_INET6, RIPNG_GROUP, &mreq.ipv6mr_multiaddr); mreq.ipv6mr_interface = ifp->ifindex; @@ -116,7 +116,7 @@ ripng_multicast_leave (struct interface *ifp) int ret; struct ipv6_mreq mreq; - if (if_is_up (ifp) && if_is_multicast (ifp)) { + if (if_is_multicast (ifp)) { memset (&mreq, 0, sizeof (mreq)); inet_pton(AF_INET6, RIPNG_GROUP, &mreq.ipv6mr_multiaddr); mreq.ipv6mr_interface = ifp->ifindex; -- 2.39.5