blob: c854daafa6008660b2424baaa3739f12b02984ae [file] [log] [blame]
alshabibae857582014-09-12 23:53:10 -07001package org.onlab.onos.provider.of.packet.impl;
2
3import static org.slf4j.LoggerFactory.getLogger;
4
5import org.apache.felix.scr.annotations.Activate;
6import org.apache.felix.scr.annotations.Component;
7import org.apache.felix.scr.annotations.Deactivate;
8import org.apache.felix.scr.annotations.Reference;
9import org.apache.felix.scr.annotations.ReferenceCardinality;
10import org.onlab.onos.net.packet.OutboundPacket;
11import org.onlab.onos.net.packet.PacketProvider;
12import org.onlab.onos.net.packet.PacketProviderRegistry;
13import org.onlab.onos.net.packet.PacketProviderService;
14import org.onlab.onos.net.provider.AbstractProvider;
15import org.onlab.onos.net.provider.ProviderId;
16import org.onlab.onos.of.controller.OpenFlowController;
17import org.onlab.onos.of.controller.OpenFlowPacketContext;
18import org.onlab.onos.of.controller.PacketListener;
19import org.slf4j.Logger;
20
21/**
22 * Provider which uses an OpenFlow controller to detect network
23 * infrastructure links.
24 */
25@Component(immediate = true)
26public class OpenFlowPacketProvider extends AbstractProvider implements PacketProvider {
27
28 private final Logger log = getLogger(getClass());
29
30 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
31 protected PacketProviderRegistry providerRegistry;
32
33 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
34 protected OpenFlowController controller;
35
36 private PacketProviderService providerService;
37
38 private final boolean useBDDP = true;
39
40 private final InternalPacketProvider listener = new InternalPacketProvider();
41
42
43
44 /**
45 * Creates an OpenFlow link provider.
46 */
47 public OpenFlowPacketProvider() {
48 super(new ProviderId("org.onlab.onos.provider.openflow"));
49 }
50
51 @Activate
52 public void activate() {
53 providerService = providerRegistry.register(this);
54 controller.addPacketListener(0, listener);
55 log.info("Started");
56 }
57
58 @Deactivate
59 public void deactivate() {
60 providerRegistry.unregister(this);
61 controller.removePacketListener(listener);
62 providerService = null;
63 log.info("Stopped");
64 }
65
66 @Override
67 public void emit(OutboundPacket packet) {
68 // TODO Auto-generated method stub
69
70 }
71
72
73 private class InternalPacketProvider implements PacketListener {
74
75
76 @Override
77 public void handlePacket(OpenFlowPacketContext pktCtx) {
78
79
80 }
81
82 }
83
84
85}