Refactoring DHCP Relay app
Change-Id: Ia9d0773683b68891efdf1d6dab3d1eae1b4c7baa
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelay.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelay.java
index fd16e1a..40003eb 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelay.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/DhcpRelay.java
@@ -33,6 +33,7 @@
import org.onlab.packet.Ethernet;
import org.onlab.packet.IPv4;
import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpAddress;
import org.onlab.packet.MacAddress;
import org.onlab.packet.TpPort;
import org.onlab.packet.UDP;
@@ -204,34 +205,25 @@
dhcpGatewayIp = cfg.getDhcpGatewayIp();
dhcpConnectMac = null; // reset for updated config
dhcpConnectVlan = null; // reset for updated config
- log.info("dhcp server connect point: " + dhcpServerConnectPoint);
- log.info("dhcp server ipaddress " + dhcpServerIp);
- if (dhcpGatewayIp != null) {
- // check for gateway
- Set<Host> ghosts = hostService.getHostsByIp(dhcpGatewayIp);
- if (ghosts == null || ghosts.isEmpty()) {
- log.info("Probing to resolve dhcp gateway IP {}", dhcpGatewayIp);
- if (oldDhcpGatewayIp != null) {
- hostService.stopMonitoringIp(oldDhcpGatewayIp);
- }
- hostService.startMonitoringIp(dhcpGatewayIp);
- } else {
- // gw is known, no need to probe; should be only 1 host with this ip
- hostUpdated(ghosts.iterator().next());
+ log.info("DHCP server connect point: " + dhcpServerConnectPoint);
+ log.info("DHCP server ipaddress " + dhcpServerIp);
+
+ IpAddress ipToProbe = dhcpGatewayIp != null ? dhcpGatewayIp : dhcpServerIp;
+ String hostToProbe = dhcpGatewayIp != null ? "gateway" : "DHCP server";
+
+ Set<Host> hosts = hostService.getHostsByIp(ipToProbe);
+ if (hosts.isEmpty()) {
+ log.info("Probing to resolve {} IP {}", hostToProbe, ipToProbe);
+ if (oldDhcpGatewayIp != null) {
+ hostService.stopMonitoringIp(oldDhcpGatewayIp);
}
+ if (oldDhcpServerIp != null) {
+ hostService.stopMonitoringIp(oldDhcpServerIp);
+ }
+ hostService.startMonitoringIp(ipToProbe);
} else {
- // check for server
- Set<Host> shosts = hostService.getHostsByIp(dhcpServerIp);
- if (shosts == null || shosts.isEmpty()) {
- log.info("Probing to resolve dhcp server IP {}", dhcpServerIp);
- if (oldDhcpServerIp != null) {
- hostService.stopMonitoringIp(oldDhcpServerIp);
- }
- hostService.startMonitoringIp(dhcpServerIp);
- } else {
- // dhcp server is know, no need to probe
- hostUpdated(shosts.iterator().next());
- }
+ // Probe target is known; There should be only 1 host with this ip
+ hostUpdated(hosts.iterator().next());
}
}