diff --git a/src/add-ons/kernel/network/protocols/ipv4/multicast.cpp b/src/add-ons/kernel/network/protocols/ipv4/multicast.cpp index 26b0a57380..acfd6f946b 100644 --- a/src/add-ons/kernel/network/protocols/ipv4/multicast.cpp +++ b/src/add-ons/kernel/network/protocols/ipv4/multicast.cpp @@ -14,10 +14,6 @@ #include -template class MulticastFilter; -template class MulticastGroupState; -template class MulticastGroupInterfaceState; - static inline bool operator==(const in_addr &a1, const in_addr &a2) { @@ -38,7 +34,7 @@ MulticastGroupInterfaceState::MulticastGroupInterfaceState( template MulticastGroupInterfaceState::~MulticastGroupInterfaceState() { - SourceList::Iterator iterator = fSources.GetIterator(); + typename SourceList::Iterator iterator = fSources.GetIterator(); while (iterator.HasNext()) { _Remove(iterator.Next()); } @@ -64,11 +60,11 @@ MulticastGroupInterfaceState::Remove(const AddressType &address) } -template MulticastGroupInterfaceState::Source * +template typename MulticastGroupInterfaceState::Source * MulticastGroupInterfaceState::_Get(const AddressType &address, bool create) { - SourceList::Iterator iterator = fSources.GetIterator(); + typename SourceList::Iterator iterator = fSources.GetIterator(); while (iterator.HasNext()) { Source *state = iterator.Next(); if (state->address == address) @@ -201,7 +197,7 @@ MulticastGroupState::DropSSM(net_interface *interface, template void MulticastGroupState::Clear() { - InterfaceList::Iterator iterator = fInterfaces.GetIterator(); + typename InterfaceList::Iterator iterator = fInterfaces.GetIterator(); while (iterator.HasNext()) _RemoveInterface(iterator.Next()); } @@ -221,11 +217,11 @@ MulticastGroupState::FilterAccepts(net_buffer *buffer) } -template MulticastGroupState::InterfaceState * +template typename MulticastGroupState::InterfaceState * MulticastGroupState::_GetInterface(net_interface *interface, bool create) { - InterfaceList::Iterator iterator = fInterfaces.GetIterator(); + typename InterfaceList::Iterator iterator = fInterfaces.GetIterator(); while (iterator.HasNext()) { InterfaceState *state = iterator.Next(); if (state->Interface() == interface) @@ -261,7 +257,7 @@ MulticastFilter::MulticastFilter(net_protocol *socket) template MulticastFilter::~MulticastFilter() { - States::Iterator iterator = fStates.GetIterator(); + typename States::Iterator iterator = fStates.GetIterator(); while (iterator.HasNext()) { GroupState *state = iterator.Next(); state->Clear(); @@ -270,11 +266,11 @@ MulticastFilter::~MulticastFilter() } -template MulticastFilter::GroupState * +template typename MulticastFilter::GroupState * MulticastFilter::GetGroup(const AddressType &groupAddress, bool create) { - States::Iterator iterator = fStates.GetIterator(); + typename States::Iterator iterator = fStates.GetIterator(); while (iterator.HasNext()) { GroupState *state = iterator.Next(); @@ -310,3 +306,7 @@ MulticastFilter::ReturnGroup(GroupState *group) } } +// IPv4 explicit template instantiation +template class MulticastFilter; +template class MulticastGroupState; +template class MulticastGroupInterfaceState;