diff --git a/src/routing/global-routing/global-router-interface.cc b/src/routing/global-routing/global-router-interface.cc index cda479043..2816e5308 100644 --- a/src/routing/global-routing/global-router-interface.cc +++ b/src/routing/global-routing/global-router-interface.cc @@ -533,6 +533,21 @@ GlobalRouter::DiscoverLSAs (void) { Ptr ndLocal = node->GetDevice(i); + // Check if it is an IP interface (could be a pure L2 NetDevice) + bool isIp = false; + for (uint32_t i = 0; i < ipv4Local->GetNInterfaces (); ++i ) + { + if (ipv4Local->GetNetDevice (i) == ndLocal) + { + isIp = true; + break; + } + } + if (!isIp) + { + continue; + } + if (ndLocal->IsBroadcast () && !ndLocal->IsPointToPoint () ) { NS_LOG_LOGIC ("Broadcast link"); @@ -623,6 +638,10 @@ GlobalRouter::DiscoverLSAs (void) // router (to use OSPF lingo) is running. // Ptr ch = ndLocal->GetChannel(); + if (ch == NULL) + { + continue; + } Ptr ndRemote = GetAdjacent(ndLocal, ch); // // The adjacent net device is aggregated to a node. We need to ask that net