[CORD-1735] Add "relayAgentIps" option to DHCP relay application config
Change-Id: I8ea5a144694f510c93530c9107573b1cb1f5703b
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
index d0a8214..c9f0d84 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
@@ -631,12 +631,16 @@
*/
private Ethernet processDhcpPacketFromClient(PacketContext context,
Ethernet ethernetPacket) {
+ ConnectPoint receivedFrom = context.inPacket().receivedFrom();
+ DeviceId receivedFromDevice = receivedFrom.deviceId();
+
// get dhcp header.
Ethernet etherReply = (Ethernet) ethernetPacket.clone();
IPv4 ipv4Packet = (IPv4) etherReply.getPayload();
UDP udpPacket = (UDP) ipv4Packet.getPayload();
DHCP dhcpPacket = (DHCP) udpPacket.getPayload();
+ // TODO: refactor
VlanId dhcpConnectVlan = null;
MacAddress dhcpConnectMac = null;
Ip4Address dhcpServerIp = null;
@@ -652,7 +656,7 @@
dhcpConnectVlan = serverInfo.getDhcpConnectVlan().orElse(null);
dhcpConnectMac = serverInfo.getDhcpConnectMac().orElse(null);
dhcpServerIp = serverInfo.getDhcpServerIp4().orElse(null);
- relayAgentIp = serverInfo.getRelayAgentIp4().orElse(null);
+ relayAgentIp = serverInfo.getRelayAgentIp4(receivedFromDevice).orElse(null);
}
if (!indirectServerInfoList.isEmpty()) {
@@ -660,7 +664,7 @@
indirectDhcpConnectVlan = indirectServerInfo.getDhcpConnectVlan().orElse(null);
indirectDhcpConnectMac = indirectServerInfo.getDhcpConnectMac().orElse(null);
indirectDhcpServerIp = indirectServerInfo.getDhcpServerIp4().orElse(null);
- indirectRelayAgentIp = indirectServerInfo.getRelayAgentIp4().orElse(null);
+ indirectRelayAgentIp = indirectServerInfo.getRelayAgentIp4(receivedFromDevice).orElse(null);
}
Ip4Address clientInterfaceIp =