Disabling host probing for now because it needs to consider the source of the probes.
Also fixed HostLocationProvider to not learn hosts with broadcast addresses. ONOS-5317. Change-Id: Ie94032cca6e488960d7181839882db55dd2da743
Showing
1 changed file
with
19 additions
and
10 deletions
... | @@ -44,7 +44,6 @@ import org.onosproject.net.Device; | ... | @@ -44,7 +44,6 @@ import org.onosproject.net.Device; |
44 | import org.onosproject.net.Host; | 44 | import org.onosproject.net.Host; |
45 | import org.onosproject.net.HostId; | 45 | import org.onosproject.net.HostId; |
46 | import org.onosproject.net.HostLocation; | 46 | import org.onosproject.net.HostLocation; |
47 | -import org.onosproject.net.MastershipRole; | ||
48 | import org.onosproject.net.device.DeviceEvent; | 47 | import org.onosproject.net.device.DeviceEvent; |
49 | import org.onosproject.net.device.DeviceListener; | 48 | import org.onosproject.net.device.DeviceListener; |
50 | import org.onosproject.net.device.DeviceService; | 49 | import org.onosproject.net.device.DeviceService; |
... | @@ -270,14 +269,20 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid | ... | @@ -270,14 +269,20 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid |
270 | @Override | 269 | @Override |
271 | public void triggerProbe(Host host) { | 270 | public void triggerProbe(Host host) { |
272 | log.info("Triggering probe on device {} ", host); | 271 | log.info("Triggering probe on device {} ", host); |
273 | - MastershipRole role = deviceService.getRole(host.location().deviceId()); | 272 | + |
274 | - if (role.equals(MastershipRole.MASTER)) { | 273 | + // FIXME Disabling host probing for now, because sending packets from a |
275 | - host.ipAddresses().forEach(ip -> { | 274 | + // broadcast MAC address caused problems when two ONOS networks were |
276 | - sendProbe(host, ip); | 275 | + // interconnected. Host probing should take into account the interface |
277 | - }); | 276 | + // configuration when determining which source address to use. |
278 | - } else { | 277 | + |
279 | - log.info("not the master, master will probe {}"); | 278 | + //MastershipRole role = deviceService.getRole(host.location().deviceId()); |
280 | - } | 279 | + //if (role.equals(MastershipRole.MASTER)) { |
280 | + // host.ipAddresses().forEach(ip -> { | ||
281 | + // sendProbe(host, ip); | ||
282 | + // }); | ||
283 | + //} else { | ||
284 | + // log.info("not the master, master will probe {}"); | ||
285 | + //} | ||
281 | } | 286 | } |
282 | 287 | ||
283 | private void sendProbe(Host host, IpAddress targetIp) { | 288 | private void sendProbe(Host host, IpAddress targetIp) { |
... | @@ -287,7 +292,7 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid | ... | @@ -287,7 +292,7 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid |
287 | probePacket = buildArpRequest(targetIp, host); | 292 | probePacket = buildArpRequest(targetIp, host); |
288 | } else { | 293 | } else { |
289 | // IPv6: Use Neighbor Discovery | 294 | // IPv6: Use Neighbor Discovery |
290 | - //FIX ME need to implement ndp probe | 295 | + //TODO need to implement ndp probe |
291 | log.info("Triggering probe on device {} ", host); | 296 | log.info("Triggering probe on device {} ", host); |
292 | } | 297 | } |
293 | 298 | ||
... | @@ -376,7 +381,11 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid | ... | @@ -376,7 +381,11 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid |
376 | if (eth == null) { | 381 | if (eth == null) { |
377 | return; | 382 | return; |
378 | } | 383 | } |
384 | + | ||
379 | MacAddress srcMac = eth.getSourceMAC(); | 385 | MacAddress srcMac = eth.getSourceMAC(); |
386 | + if (srcMac.isBroadcast() || srcMac.isMulticast()) { | ||
387 | + return; | ||
388 | + } | ||
380 | 389 | ||
381 | VlanId vlan = VlanId.vlanId(eth.getVlanID()); | 390 | VlanId vlan = VlanId.vlanId(eth.getVlanID()); |
382 | ConnectPoint heardOn = context.inPacket().receivedFrom(); | 391 | ConnectPoint heardOn = context.inPacket().receivedFrom(); | ... | ... |
-
Please register or login to post a comment