HostLocationProvider fix to avoid locating hosts on logical ports.
Change-Id: I39c754bbb204ef13799f4630557d29e2c18ad915
Showing
1 changed file
with
13 additions
and
8 deletions
... | @@ -15,12 +15,6 @@ | ... | @@ -15,12 +15,6 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.provider.host.impl; | 16 | package org.onosproject.provider.host.impl; |
17 | 17 | ||
18 | -import static com.google.common.base.Strings.isNullOrEmpty; | ||
19 | -import static org.slf4j.LoggerFactory.getLogger; | ||
20 | - | ||
21 | -import java.util.Dictionary; | ||
22 | -import java.util.Set; | ||
23 | - | ||
24 | import org.apache.felix.scr.annotations.Activate; | 18 | import org.apache.felix.scr.annotations.Activate; |
25 | import org.apache.felix.scr.annotations.Component; | 19 | import org.apache.felix.scr.annotations.Component; |
26 | import org.apache.felix.scr.annotations.Deactivate; | 20 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -30,8 +24,8 @@ import org.apache.felix.scr.annotations.Reference; | ... | @@ -30,8 +24,8 @@ import org.apache.felix.scr.annotations.Reference; |
30 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 24 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
31 | import org.onlab.packet.ARP; | 25 | import org.onlab.packet.ARP; |
32 | import org.onlab.packet.Ethernet; | 26 | import org.onlab.packet.Ethernet; |
33 | -import org.onlab.packet.IPacket; | ||
34 | import org.onlab.packet.ICMP6; | 27 | import org.onlab.packet.ICMP6; |
28 | +import org.onlab.packet.IPacket; | ||
35 | import org.onlab.packet.IPv6; | 29 | import org.onlab.packet.IPv6; |
36 | import org.onlab.packet.IpAddress; | 30 | import org.onlab.packet.IpAddress; |
37 | import org.onlab.packet.VlanId; | 31 | import org.onlab.packet.VlanId; |
... | @@ -69,6 +63,12 @@ import org.onosproject.net.topology.TopologyService; | ... | @@ -69,6 +63,12 @@ import org.onosproject.net.topology.TopologyService; |
69 | import org.osgi.service.component.ComponentContext; | 63 | import org.osgi.service.component.ComponentContext; |
70 | import org.slf4j.Logger; | 64 | import org.slf4j.Logger; |
71 | 65 | ||
66 | +import java.util.Dictionary; | ||
67 | +import java.util.Set; | ||
68 | + | ||
69 | +import static com.google.common.base.Strings.isNullOrEmpty; | ||
70 | +import static org.slf4j.LoggerFactory.getLogger; | ||
71 | + | ||
72 | /** | 72 | /** |
73 | * Provider which uses an OpenFlow controller to detect network | 73 | * Provider which uses an OpenFlow controller to detect network |
74 | * end-station hosts. | 74 | * end-station hosts. |
... | @@ -236,8 +236,8 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid | ... | @@ -236,8 +236,8 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid |
236 | if (context == null) { | 236 | if (context == null) { |
237 | return; | 237 | return; |
238 | } | 238 | } |
239 | - Ethernet eth = context.inPacket().parsed(); | ||
240 | 239 | ||
240 | + Ethernet eth = context.inPacket().parsed(); | ||
241 | if (eth == null) { | 241 | if (eth == null) { |
242 | return; | 242 | return; |
243 | } | 243 | } |
... | @@ -245,6 +245,11 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid | ... | @@ -245,6 +245,11 @@ public class HostLocationProvider extends AbstractProvider implements HostProvid |
245 | VlanId vlan = VlanId.vlanId(eth.getVlanID()); | 245 | VlanId vlan = VlanId.vlanId(eth.getVlanID()); |
246 | ConnectPoint heardOn = context.inPacket().receivedFrom(); | 246 | ConnectPoint heardOn = context.inPacket().receivedFrom(); |
247 | 247 | ||
248 | + // If this arrived on control port, bail out. | ||
249 | + if (heardOn.port().isLogical()) { | ||
250 | + return; | ||
251 | + } | ||
252 | + | ||
248 | // If this is not an edge port, bail out. | 253 | // If this is not an edge port, bail out. |
249 | Topology topology = topologyService.currentTopology(); | 254 | Topology topology = topologyService.currentTopology(); |
250 | if (topologyService.isInfrastructure(topology, heardOn)) { | 255 | if (topologyService.isInfrastructure(topology, heardOn)) { | ... | ... |
-
Please register or login to post a comment