pub type MulticastRouteTargets<D> = Arc<[MulticastRouteTarget<D>]>;
Expand description
The collection of targets out of which to forward a multicast packet.
Note, storing the targets behind an Arc
allows us to return a reference
to the targets, to contexts that are not protected by the multicast route
table lock, without cloning the underlying data. Here, an Arc<Mutex<...>>
is unnecessary, because the underlying targets list is never modified. This
is not to say that a route’s targets are never modified (e.g. device removal
prunes the list of targets); in such cases the route’s target list is
replaced with a new allocation. This strategy allows us to avoid
additional locking on the hot path, at the cost of extra allocations for
certain control operations.
Aliased Type§
struct MulticastRouteTargets<D> { /* private fields */ }