Fix: resolve NPE caused by non-existence of IP protocol
Change-Id: I8f2233637986089b9347da03221db2852faa7fe7
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java
index 8b28797..73258ac 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java
@@ -41,11 +41,21 @@
public ByteBuffer encode(FlowInfo flowInfo) {
ByteBuffer byteBuffer = ByteBuffer.allocate(MESSAGE_SIZE);
+ int srcPort = 0;
+ int dstPort = 0;
String deviceId = flowInfo.deviceId().toString();
short switchId = (short) Integer.parseInt(deviceId.substring(3,
deviceId.length()), 16);
+ if (flowInfo.srcPort() != null) {
+ srcPort = flowInfo.srcPort().toInt();
+ }
+
+ if (flowInfo.dstPort() != null) {
+ dstPort = flowInfo.dstPort().toInt();
+ }
+
byteBuffer.put(flowInfo.flowType())
.putShort(switchId)
.putInt(flowInfo.inputInterfaceId())
@@ -53,10 +63,10 @@
.putShort(flowInfo.vlanId().toShort())
.put(flowInfo.srcIp().address().toOctets())
.put((byte) flowInfo.srcIp().prefixLength())
- .putShort((short) flowInfo.srcPort().toInt())
+ .putShort((short) srcPort)
.put(flowInfo.dstIp().address().toOctets())
.put((byte) flowInfo.dstIp().prefixLength())
- .putShort((short) flowInfo.dstPort().toInt())
+ .putShort((short) dstPort)
.put(flowInfo.protocol())
.put(flowInfo.srcMac().toBytes())
.put(flowInfo.dstMac().toBytes());