On Tue, Dec 07, 2010 at 11:32:22PM +0100, Linus L??ssing wrote:
> With this commit, the multicast forwarding table, which has been
> previously filled up due to multicast tracker packets, will now be
> checked frequently (once per second) for timeouted entries. If so these
> entries get removed from the table.
> 
> Note, that a more frequent check interval is not necessary, as multicast
> data will not only be forwarded if an entry exists, but also if that one
> might not have timeouted yet.
> 
> Signed-off-by: Linus L??ssing <[email protected]>
> ---
>  multicast.c  |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  multicast.h  |    1 +
>  originator.c |    2 ++
>  3 files changed, 54 insertions(+), 0 deletions(-)
> 
> diff --git a/multicast.c b/multicast.c
> index edfe7e2..2b1bfde 100644
> --- a/multicast.c
> +++ b/multicast.c
> @@ -821,6 +821,57 @@ out:
>       rcu_read_unlock();
>  }
>  
> +void purge_mcast_forw_table(struct bat_priv *bat_priv)
> +{
> +     unsigned long flags;
> +     struct mcast_forw_table_entry *table_entry, *tmp_table_entry;
> +     struct mcast_forw_orig_entry *orig_entry, *tmp_orig_entry;
> +     struct mcast_forw_if_entry *if_entry, *tmp_if_entry;
> +     struct mcast_forw_nexthop_entry *nexthop_entry, *tmp_nexthop_entry;
> +
> +     spin_lock_irqsave(&bat_priv->mcast_forw_table_lock, flags);
> +     list_for_each_entry_safe(table_entry, tmp_table_entry,
> +                              &bat_priv->mcast_forw_table, list) {
> +             list_for_each_entry_safe(orig_entry, tmp_orig_entry,
> +                                      &table_entry->mcast_orig_list, list) {
> +                     list_for_each_entry_safe(if_entry, tmp_if_entry,
> +                                         &orig_entry->mcast_if_list, list) {
> +                             list_for_each_entry_safe(nexthop_entry,
> +                                             tmp_nexthop_entry,
> +                                             &if_entry->mcast_nexthop_list,
> +                                             list) {


I would probably break this up into four functions.

  Andrew

Reply via email to