VOL-2620 Optimize igmpProxy app by directly using SADIS

Change-Id: I2c67f6162d446de1fb773fe311a93972f3aa582a
diff --git a/src/main/java/org/opencord/igmpproxy/SingleStateMachine.java b/src/main/java/org/opencord/igmpproxy/SingleStateMachine.java
index c5aaee7..c2b32a4 100644
--- a/src/main/java/org/opencord/igmpproxy/SingleStateMachine.java
+++ b/src/main/java/org/opencord/igmpproxy/SingleStateMachine.java
@@ -18,6 +18,7 @@
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.Ip4Address;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
 
 import java.util.Random;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -42,6 +43,7 @@
     private DeviceId devId;
     private Ip4Address groupIp;
     private Ip4Address srcIp;
+    private PortNumber upLinkPort;
 
     private AtomicInteger count = new AtomicInteger(DEFAULT_COUNT);
     private int timerId = IgmpTimer.INVALID_TIMER_ID;
@@ -61,10 +63,11 @@
             {nonTransition, delayTransition, idleTransition};
     private int currentState = STATE_NON;
 
-    public SingleStateMachine(DeviceId devId, Ip4Address groupIp, Ip4Address src) {
+    public SingleStateMachine(DeviceId devId, Ip4Address groupIp, Ip4Address src, PortNumber upLinkPort) {
         this.devId = devId;
         this.groupIp = groupIp;
         this.srcIp = src;
+        this.upLinkPort = upLinkPort;
     }
 
     public Ip4Address getGroupIp() {
@@ -137,7 +140,7 @@
         public void leave(boolean messageOutAllowed) {
             if (messageOutAllowed) {
                 Ethernet eth = IgmpSender.getInstance().buildIgmpV3Leave(groupIp, srcIp);
-                IgmpSender.getInstance().sendIgmpPacketUplink(eth, devId);
+                IgmpSender.getInstance().sendIgmpPacketUplink(eth, devId, upLinkPort);
             }
         }
 
@@ -153,7 +156,7 @@
         public void join(boolean messageOutAllowed) {
             if (messageOutAllowed) {
                 Ethernet eth = IgmpSender.getInstance().buildIgmpV3Join(groupIp, srcIp);
-                IgmpSender.getInstance().sendIgmpPacketUplink(eth, devId);
+                IgmpSender.getInstance().sendIgmpPacketUplink(eth, devId, upLinkPort);
                 timeOut = getTimeOut(IgmpManager.getUnsolicitedTimeout());
                 timerId = IgmpTimer.start(SingleStateMachine.this, timeOut);
             }
@@ -171,7 +174,7 @@
         public void timeOut() {
             if (sendQuery) {
                 Ethernet eth = IgmpSender.getInstance().buildIgmpV3ResponseQuery(groupIp, srcIp);
-                IgmpSender.getInstance().sendIgmpPacketUplink(eth, devId);
+                IgmpSender.getInstance().sendIgmpPacketUplink(eth, devId, upLinkPort);
                 timeOut = DEFAULT_MAX_RESP;
             }
         }