diff --git a/model/isl-mock-channel.cc b/model/isl-mock-channel.cc index 4fc1765..4e9b697 100644 --- a/model/isl-mock-channel.cc +++ b/model/isl-mock-channel.cc @@ -67,8 +67,21 @@ IslMockChannel::TransmitStart ( if (dst == nullptr) { - NS_LOG_LOGIC ("destination address " << destAddr << " unknown on channel"); - return false; + if (src->IsBroadcast () || src->IsMulticast ()) + // try to deliver to every node in LOS + { + for (size_t i = 0; i < GetNDevices (); i ++) + { + if (i == srcId) continue; + Deliver (p, src, GetDevice (i), txTime); + } + return true; + } + else + { + NS_LOG_LOGIC ("destination address " << destAddr << " unknown on channel"); + return false; + } } else { diff --git a/model/leo-mock-channel.cc b/model/leo-mock-channel.cc index 9cd71f7..004ab6c 100644 --- a/model/leo-mock-channel.cc +++ b/model/leo-mock-channel.cc @@ -64,7 +64,7 @@ LeoMockChannel::TransmitStart (Ptr p, } return Deliver (p, srcDev, it->second, txTime); } - else + else if (srcDev->IsBroadcast () || srcDev->IsMulticast ()) // space to ground delivers to everything within the beam { DeviceIndex::iterator it = m_groundDevices.find (dst);