Upgrade CORD VTN app to ONOS 1.12.0
Change-Id: Ib0c24100c87ef198359901d22e6f24c435ad0a08
diff --git a/pom.xml b/pom.xml
index 5c0251f..02a6093 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
<properties>
<onos.app.name>org.opencord.vtn</onos.app.name>
- <onos.version>1.10.6</onos.version>
+ <onos.version>1.12.0</onos.version>
<onos.app.title>VTN App</onos.app.title>
<onos.app.category>Traffic Steering</onos.app.category>
<onos.app.url>http://opencord.org</onos.app.url>
diff --git a/src/main/java/org/opencord/cordvtn/impl/CordVtnDhcpProxy.java b/src/main/java/org/opencord/cordvtn/impl/CordVtnDhcpProxy.java
index 28a7f98..e63cdcf 100644
--- a/src/main/java/org/opencord/cordvtn/impl/CordVtnDhcpProxy.java
+++ b/src/main/java/org/opencord/cordvtn/impl/CordVtnDhcpProxy.java
@@ -26,8 +26,6 @@
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onlab.packet.DHCP;
-import org.onlab.packet.DHCPOption;
-import org.onlab.packet.DHCPPacketType;
import org.onlab.packet.Ethernet;
import org.onlab.packet.IPv4;
import org.onlab.packet.Ip4Address;
@@ -35,6 +33,7 @@
import org.onlab.packet.MacAddress;
import org.onlab.packet.TpPort;
import org.onlab.packet.UDP;
+import org.onlab.packet.dhcp.DhcpOption;
import org.onlab.util.Tools;
import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.core.ApplicationId;
@@ -68,7 +67,14 @@
import java.util.Set;
import java.util.stream.Collectors;
-import static org.onlab.packet.DHCP.DHCPOptionCode.*;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_BroadcastAddress;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_DHCPServerIp;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_DomainServer;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_END;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_LeaseTime;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_MessageType;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_RouterAddress;
+import static org.onlab.packet.DHCP.DHCPOptionCode.OptionCode_SubnetMask;
import static org.onlab.packet.DHCPPacketType.DHCPACK;
import static org.onlab.packet.DHCPPacketType.DHCPOFFER;
import static org.opencord.cordvtn.api.Constants.DEFAULT_GATEWAY_MAC_STR;
@@ -184,10 +190,12 @@
if (ethPacket == null || ethPacket.getEtherType() != Ethernet.TYPE_IPV4) {
return;
}
+
IPv4 ipv4Packet = (IPv4) ethPacket.getPayload();
if (ipv4Packet.getProtocol() != IPv4.PROTOCOL_UDP) {
return;
}
+
UDP udpPacket = (UDP) ipv4Packet.getPayload();
if (udpPacket.getDestinationPort() != UDP.DHCP_SERVER_PORT ||
udpPacket.getSourcePort() != UDP.DHCP_CLIENT_PORT) {
@@ -204,7 +212,7 @@
return;
}
- DHCPPacketType inPacketType = getPacketType(dhcpPacket);
+ DHCP.MsgType inPacketType = dhcpPacket.getPacketType();
if (inPacketType == null || dhcpPacket.getClientHardwareAddress() == null) {
log.trace("Malformed DHCP packet received, ignore it");
return;
@@ -245,24 +253,11 @@
// do nothing
break;
default:
+ log.warn("Unknown packet type {}", inPacketType);
break;
}
}
- private DHCPPacketType getPacketType(DHCP dhcpPacket) {
- DHCPOption optType = dhcpPacket.getOption(OptionCode_MessageType);
- if (optType == null) {
- log.trace("DHCP packet with no message type, ignore it");
- return null;
- }
-
- DHCPPacketType inPacketType = DHCPPacketType.getType(optType.getData()[0]);
- if (inPacketType == null) {
- log.trace("DHCP packet with no packet type, ignore it");
- }
- return inPacketType;
- }
-
private Ethernet buildReply(Ethernet ethRequest, byte packetType,
Instance reqInstance) {
ServiceNetwork snet = snetService.serviceNetwork(reqInstance.netId());
@@ -327,9 +322,9 @@
dhcpReply.setServerIPAddress(serverIp.toInt());
dhcpReply.setClientHardwareAddress(request.getClientHardwareAddress());
- List<DHCPOption> options = Lists.newArrayList();
+ List<DhcpOption> options = Lists.newArrayList();
// message type
- DHCPOption option = new DHCPOption();
+ DhcpOption option = new DhcpOption();
option.setCode(OptionCode_MessageType.getValue());
option.setLength((byte) 1);
byte[] optionData = {msgType};
@@ -337,14 +332,14 @@
options.add(option);
// server identifier
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_DHCPServerIp.getValue());
option.setLength((byte) 4);
option.setData(serverIp.toOctets());
options.add(option);
// lease time
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_LeaseTime.getValue());
option.setLength((byte) 4);
option.setData(DHCP_DATA_LEASE_INFINITE);
@@ -352,7 +347,7 @@
// subnet mask
Ip4Address subnetMask = Ip4Address.makeMaskPrefix(subnetPrefixLen);
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_SubnetMask.getValue());
option.setLength((byte) 4);
option.setData(subnetMask.toOctets());
@@ -360,21 +355,21 @@
// broadcast address
Ip4Address broadcast = Ip4Address.makeMaskedAddress(yourIp, subnetPrefixLen);
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_BroadcastAddress.getValue());
option.setLength((byte) 4);
option.setData(broadcast.toOctets());
options.add(option);
// domain server
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_DomainServer.getValue());
option.setLength((byte) 4);
option.setData(DEFAULT_DNS.toOctets());
options.add(option);
// TODO fix MTU value to be configurable
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(DHCP_OPTION_MTU);
option.setLength((byte) 2);
option.setData(DHCP_DATA_MTU_DEFAULT);
@@ -382,7 +377,7 @@
// router address
if (snet.type() != MANAGEMENT_LOCAL && snet.type() != MANAGEMENT_HOST) {
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_RouterAddress.getValue());
option.setLength((byte) 4);
option.setData(serverIp.toOctets());
@@ -392,7 +387,7 @@
// classless static routes
byte[] data = getClasslessStaticRoutesData(snet);
if (data.length >= 5) {
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(DHCP_OPTION_CLASSLESS_STATIC_ROUTE);
option.setLength((byte) data.length);
option.setData(data);
@@ -400,7 +395,7 @@
}
// end option
- option = new DHCPOption();
+ option = new DhcpOption();
option.setCode(OptionCode_END.getValue());
option.setLength((byte) 1);
options.add(option);