net: ipv6: mld: introduce mld_{gq, ifc, dad}_stop_timer functions
We already have mld_{gq,ifc,dad}_start_timer() functions, so introduce mld_{gq,ifc,dad}_stop_timer() functions to reduce code size and make it more readable. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2b7c121f82
commit
b4af8def5c
1 changed files with 25 additions and 16 deletions
|
@ -1006,6 +1006,13 @@ static void mld_gq_start_timer(struct inet6_dev *idev)
|
|||
in6_dev_hold(idev);
|
||||
}
|
||||
|
||||
static void mld_gq_stop_timer(struct inet6_dev *idev)
|
||||
{
|
||||
idev->mc_gq_running = 0;
|
||||
if (del_timer(&idev->mc_gq_timer))
|
||||
__in6_dev_put(idev);
|
||||
}
|
||||
|
||||
static void mld_ifc_start_timer(struct inet6_dev *idev, unsigned long delay)
|
||||
{
|
||||
unsigned long tv = net_random() % delay;
|
||||
|
@ -1014,6 +1021,13 @@ static void mld_ifc_start_timer(struct inet6_dev *idev, unsigned long delay)
|
|||
in6_dev_hold(idev);
|
||||
}
|
||||
|
||||
static void mld_ifc_stop_timer(struct inet6_dev *idev)
|
||||
{
|
||||
idev->mc_ifc_count = 0;
|
||||
if (del_timer(&idev->mc_ifc_timer))
|
||||
__in6_dev_put(idev);
|
||||
}
|
||||
|
||||
static void mld_dad_start_timer(struct inet6_dev *idev, unsigned long delay)
|
||||
{
|
||||
unsigned long tv = net_random() % delay;
|
||||
|
@ -1022,6 +1036,12 @@ static void mld_dad_start_timer(struct inet6_dev *idev, unsigned long delay)
|
|||
in6_dev_hold(idev);
|
||||
}
|
||||
|
||||
static void mld_dad_stop_timer(struct inet6_dev *idev)
|
||||
{
|
||||
if (del_timer(&idev->mc_dad_timer))
|
||||
__in6_dev_put(idev);
|
||||
}
|
||||
|
||||
/*
|
||||
* IGMP handling (alias multicast ICMPv6 messages)
|
||||
*/
|
||||
|
@ -1234,15 +1254,9 @@ static int mld_process_v1(struct inet6_dev *idev, struct mld_msg *mld,
|
|||
mld_set_v1_mode(idev);
|
||||
|
||||
/* cancel MLDv2 report timer */
|
||||
idev->mc_gq_running = 0;
|
||||
if (del_timer(&idev->mc_gq_timer))
|
||||
__in6_dev_put(idev);
|
||||
|
||||
mld_gq_stop_timer(idev);
|
||||
/* cancel the interface change timer */
|
||||
idev->mc_ifc_count = 0;
|
||||
if (del_timer(&idev->mc_ifc_timer))
|
||||
__in6_dev_put(idev);
|
||||
|
||||
mld_ifc_stop_timer(idev);
|
||||
/* clear deleted report items */
|
||||
mld_clear_delrec(idev);
|
||||
|
||||
|
@ -2434,14 +2448,9 @@ void ipv6_mc_down(struct inet6_dev *idev)
|
|||
/* Withdraw multicast list */
|
||||
|
||||
read_lock_bh(&idev->lock);
|
||||
idev->mc_ifc_count = 0;
|
||||
if (del_timer(&idev->mc_ifc_timer))
|
||||
__in6_dev_put(idev);
|
||||
idev->mc_gq_running = 0;
|
||||
if (del_timer(&idev->mc_gq_timer))
|
||||
__in6_dev_put(idev);
|
||||
if (del_timer(&idev->mc_dad_timer))
|
||||
__in6_dev_put(idev);
|
||||
mld_ifc_stop_timer(idev);
|
||||
mld_gq_stop_timer(idev);
|
||||
mld_dad_stop_timer(idev);
|
||||
|
||||
for (i = idev->mc_list; i; i=i->next)
|
||||
igmp6_group_dropped(i);
|
||||
|
|
Loading…
Reference in a new issue