Request packet in when config being modified during runtime.
We can now enable features such as IPv6 via cfg command dynamically.
NOTE: We should remove unnecessary packet requests when app being deactivated
or modified once PacketService support the request revocation.
Change-Id: I7f239ce9db74456097675d03de99468db70a919f
diff --git a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
index c0c36c9..5b66117 100644
--- a/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onosproject/fwd/ReactiveForwarding.java
@@ -163,7 +163,32 @@
packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2);
readComponentConfiguration(context);
+ requestPackests();
+ log.info("Started with Application ID {}", appId.id());
+ }
+
+ @Deactivate
+ public void deactivate() {
+ // TODO revoke all packet requests when deactivate
+ cfgService.unregisterProperties(getClass(), false);
+ flowRuleService.removeFlowRulesById(appId);
+ packetService.removeProcessor(processor);
+ processor = null;
+ log.info("Stopped");
+ }
+
+ @Modified
+ public void modified(ComponentContext context) {
+ // TODO revoke unnecessary packet requests when config being modified
+ readComponentConfiguration(context);
+ requestPackests();
+ }
+
+ /**
+ * Request packet in via PacketService.
+ */
+ private void requestPackests() {
TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
selector.matchEthType(Ethernet.TYPE_IPV4);
packetService.requestPackets(selector.build(), PacketPriority.REACTIVE,
@@ -177,22 +202,6 @@
packetService.requestPackets(selector.build(),
PacketPriority.REACTIVE, appId);
}
-
- log.info("Started with Application ID {}", appId.id());
- }
-
- @Deactivate
- public void deactivate() {
- cfgService.unregisterProperties(getClass(), false);
- flowRuleService.removeFlowRulesById(appId);
- packetService.removeProcessor(processor);
- processor = null;
- log.info("Stopped");
- }
-
- @Modified
- public void modified(ComponentContext context) {
- readComponentConfiguration(context);
}
/**
diff --git a/apps/proxyarp/src/main/java/org/onosproject/proxyarp/ProxyArp.java b/apps/proxyarp/src/main/java/org/onosproject/proxyarp/ProxyArp.java
index 8b6b413..afcd4ee 100644
--- a/apps/proxyarp/src/main/java/org/onosproject/proxyarp/ProxyArp.java
+++ b/apps/proxyarp/src/main/java/org/onosproject/proxyarp/ProxyArp.java
@@ -76,10 +76,34 @@
public void activate(ComponentContext context) {
cfgService.registerProperties(getClass());
appId = coreService.registerApplication("org.onosproject.proxyarp");
- readComponentConfiguration(context);
packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 1);
+ readComponentConfiguration(context);
+ requestPackests();
+ log.info("Started with Application ID {}", appId.id());
+ }
+
+ @Deactivate
+ public void deactivate() {
+ // TODO revoke all packet requests when deactivate
+ cfgService.unregisterProperties(getClass(), false);
+ packetService.removeProcessor(processor);
+ processor = null;
+ log.info("Stopped");
+ }
+
+ @Modified
+ public void modified(ComponentContext context) {
+ // TODO revoke unnecessary packet requests when config being modified
+ readComponentConfiguration(context);
+ requestPackests();
+ }
+
+ /**
+ * Request packet in via PacketService.
+ */
+ private void requestPackests() {
TrafficSelector.Builder selectorBuilder =
DefaultTrafficSelector.builder();
selectorBuilder.matchEthType(Ethernet.TYPE_ARP);
@@ -103,21 +127,6 @@
packetService.requestPackets(selectorBuilder.build(),
PacketPriority.CONTROL, appId);
}
-
- log.info("Started with Application ID {}", appId.id());
- }
-
- @Deactivate
- public void deactivate() {
- cfgService.unregisterProperties(getClass(), false);
- packetService.removeProcessor(processor);
- processor = null;
- log.info("Stopped");
- }
-
- @Modified
- public void modified(ComponentContext context) {
- readComponentConfiguration(context);
}
/**
diff --git a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
index 11888fd..b776280 100644
--- a/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
+++ b/providers/host/src/main/java/org/onosproject/provider/host/impl/HostLocationProvider.java
@@ -128,17 +128,43 @@
public void activate(ComponentContext context) {
cfgService.registerProperties(getClass());
appId = coreService.registerApplication("org.onosproject.provider.host");
- readComponentConfiguration(context);
providerService = providerRegistry.register(this);
packetService.addProcessor(processor, 1);
deviceService.addListener(deviceListener);
+ readComponentConfiguration(context);
+ requestPackests();
+ log.info("Started with Application ID {}", appId.id());
+ }
+
+ @Deactivate
+ public void deactivate() {
+ // TODO revoke all packet requests when deactivate
+ cfgService.unregisterProperties(getClass(), false);
+ providerRegistry.unregister(this);
+ packetService.removeProcessor(processor);
+ deviceService.removeListener(deviceListener);
+ providerService = null;
+ log.info("Stopped");
+ }
+
+ @Modified
+ public void modified(ComponentContext context) {
+ // TODO revoke unnecessary packet requests when config being modified
+ readComponentConfiguration(context);
+ requestPackests();
+ }
+
+ /**
+ * Request packet in via PacketService.
+ */
+ private void requestPackests() {
TrafficSelector.Builder selectorBuilder =
DefaultTrafficSelector.builder();
selectorBuilder.matchEthType(Ethernet.TYPE_ARP);
packetService.requestPackets(selectorBuilder.build(),
- PacketPriority.CONTROL, appId);
+ PacketPriority.CONTROL, appId);
if (ipv6NeighborDiscovery) {
// IPv6 Neighbor Solicitation packet.
@@ -157,23 +183,6 @@
packetService.requestPackets(selectorBuilder.build(),
PacketPriority.CONTROL, appId);
}
-
- log.info("Started with Application ID {}", appId.id());
- }
-
- @Deactivate
- public void deactivate() {
- cfgService.unregisterProperties(getClass(), false);
- providerRegistry.unregister(this);
- packetService.removeProcessor(processor);
- deviceService.removeListener(deviceListener);
- providerService = null;
- log.info("Stopped");
- }
-
- @Modified
- public void modified(ComponentContext context) {
- readComponentConfiguration(context);
}
/**
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
index bcf4f02..8db294b 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
@@ -183,6 +183,7 @@
@Deactivate
public void deactivate() {
+ // TODO revoke all packet requests when deactivate
cfgService.unregisterProperties(getClass(), false);
if (disableLinkDiscovery) {
return;
@@ -202,6 +203,7 @@
@Modified
public void modified(ComponentContext context) {
+ // TODO revoke unnecessary packet requests when config being modified
if (context == null) {
loadSuppressionRules();
return;
@@ -241,6 +243,9 @@
// should refresh discoverers when we need dynamic reconfiguration
}
+ /**
+ * Request packet in via PacketService.
+ */
private void requestPackets() {
TrafficSelector.Builder lldpSelector = DefaultTrafficSelector.builder();
lldpSelector.matchEthType(Ethernet.TYPE_LLDP);