blob: f4102ecd6b8e882f92f9a090eaa31481b9eb743b [file] [log] [blame]
alshabib030111e2014-09-15 15:56:42 -07001package org.onlab.onos.fwd;
2
3import static org.slf4j.LoggerFactory.getLogger;
4
5import org.onlab.onos.net.PortNumber;
6import org.onlab.onos.net.flow.Instructions;
7import org.onlab.onos.net.packet.PacketContext;
8import org.onlab.onos.net.packet.PacketProcessor;
9import org.onlab.onos.net.topology.TopologyService;
10import org.slf4j.Logger;
11
12public class ReactivePacketProcessor implements PacketProcessor {
13
14 private final Logger log = getLogger(getClass());
15 private final TopologyService topologyService;
16
17
18 public ReactivePacketProcessor(TopologyService topologyService) {
19 this.topologyService = topologyService;
20 }
21
22
23 @Override
24 public void process(PacketContext context) {
25 boolean canBcast = topologyService.isBroadcastPoint(topologyService.currentTopology(),
26 context.inPacket().receivedFrom());
27
28 if (canBcast) {
29 context.treatmentBuilder().add(Instructions.createOutput(PortNumber.FLOOD));
30 context.send();
31 } else {
32 context.block();
33 }
34
35 }
36
37}