netns: ip6mr: declare counter cache_resolve_queue_len per-namespace

Preliminary work to make IPv6 multicast forwarding netns-aware.

Declare variable cache_resolve_queue_len per-namespace: moves it into
struct netns_ipv6.

This variable counts the number of unresolved cache entries queued in the
list mfc_unres_queue. This list is kept global to all netns as the number
of entries per namespace is limited to 10 (hardcoded in routine 
ip6mr_cache_unresolved).
Entries belonging to different namespaces in mfc_unres_queue will be
identified by matching the mfc_net member introduced previously in 
struct mfc6_cache.

Keeping this list global to all netns, also allows us to keep a single
timer (ipmr_expire_timer) to handle their expiration.
In some places cache_resolve_queue_len value was tested for arming 
or deleting the timer. These tests were equivalent to testing 
mfc_unres_queue value instead and are replaced in this patch.

At the moment, cache_resolve_queue_len is only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Benjamin Thery
2008-12-10 16:27:21 -08:00
committed by David S. Miller
parent 4a6258a0e3
commit 4045e57c19
2 changed files with 22 additions and 19 deletions

View File

@@ -60,6 +60,7 @@ struct netns_ipv6 {
struct mfc6_cache **mfc6_cache_array;
struct mif_device *vif6_table;
int maxvif;
atomic_t cache_resolve_queue_len;
#endif
};
#endif