[CORD-2362] dhcp relay v6 counters implementation
Change-Id: I1ec322d6d77ff62ec4ad91632349e3a2c0d058f3
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelayManager.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelayManager.java
index 07e5cd9..39123ac 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelayManager.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelayManager.java
@@ -93,6 +93,11 @@
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import static org.onlab.util.Tools.groupedThreads;
+
import com.google.common.collect.ImmutableSet;
@@ -153,6 +158,7 @@
}
);
+
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected NetworkConfigRegistry cfgService;
@@ -192,14 +198,30 @@
label = "Enable Address resolution protocol")
protected boolean arpEnabled = true;
+ @Property(name = "dhcpPollInterval", intValue = 24 * 3600,
+ label = "dhcp relay poll interval")
+ protected int dhcpPollInterval = 24 * 3600;
+
@Property(name = "dhcpFpmEnabled", boolValue = false,
label = "Enable DhcpRelay Fpm")
protected boolean dhcpFpmEnabled = false;
+
+ private ScheduledExecutorService timerExecutor;
+
protected DeviceListener deviceListener = new InternalDeviceListener();
private DhcpRelayPacketProcessor dhcpRelayPacketProcessor = new DhcpRelayPacketProcessor();
private ApplicationId appId;
+ /**
+ * One second timer.
+ */
+ class Dhcp6Timer implements Runnable {
+ @Override
+ public void run() {
+ v6Handler.timeTick();
+ }
+ };
@Activate
protected void activate(ComponentContext context) {
@@ -214,6 +236,14 @@
//add the packet processor
packetService.addProcessor(dhcpRelayPacketProcessor, PacketProcessor.director(0));
+ timerExecutor = Executors.newScheduledThreadPool(1,
+ groupedThreads("dhcpRelay",
+ "config-reloader-%d", log));
+ timerExecutor.scheduleAtFixedRate(new Dhcp6Timer(),
+ 0,
+ dhcpPollInterval,
+ TimeUnit.SECONDS);
+
modified(context);
// Enable distribute route store
@@ -222,6 +252,9 @@
compCfgService.registerProperties(getClass());
deviceService.addListener(deviceListener);
+
+
+
log.info("DHCP-RELAY Started");
}
@@ -233,6 +266,8 @@
cancelArpPackets();
compCfgService.unregisterProperties(getClass(), false);
deviceService.removeListener(deviceListener);
+ timerExecutor.shutdown();
+
log.info("DHCP-RELAY Stopped");
}
@@ -254,6 +289,21 @@
cancelArpPackets();
}
+ int intervalVal = Tools.getIntegerProperty(properties, "dhcpPollInterval");
+ log.info("DhcpRelay poll interval new {} old {}", intervalVal, dhcpPollInterval);
+ if (intervalVal != dhcpPollInterval) {
+ timerExecutor.shutdown();
+ dhcpPollInterval = intervalVal;
+ timerExecutor = Executors.newScheduledThreadPool(1,
+ groupedThreads("dhcpRelay",
+ "config-reloader-%d", log));
+ timerExecutor.scheduleAtFixedRate(new Dhcp6Timer(),
+ 0,
+ dhcpPollInterval > 1 ? dhcpPollInterval : 1,
+ TimeUnit.SECONDS);
+ v6Handler.setDhcp6PollInterval(dhcpPollInterval);
+ }
+
flag = Tools.isPropertyEnabled(properties, "dhcpFpmEnabled");
if (flag != null) {
boolean oldValue = dhcpFpmEnabled;
@@ -368,7 +418,10 @@
public Collection<DhcpRecord> getDhcpRecords() {
return dhcpRelayStore.getDhcpRecords();
}
-
+ @Override
+ public void updateDhcpRecord(HostId hostId, DhcpRecord dhcpRecord) {
+ dhcpRelayStore.updateDhcpRecord(hostId, dhcpRecord);
+ }
@Override
public Optional<MacAddress> getDhcpServerMacAddress() {
// TODO: depreated it
@@ -617,4 +670,6 @@
public Optional<FpmRecord> removeFpmRecord(IpPrefix prefix) {
return dhcpFpmPrefixStore.removeFpmRecord(prefix);
}
+
+
}