[SEBA-40, SEBA-942 & SEBA-957] Operational status for IGMP Channel, IGMP Group and Invalid IGMP Packets

Change-Id: I8efb475f69ca5df8f2f4c1daaaba52b8ce8572f7
diff --git a/src/main/java/org/opencord/igmpproxy/IgmpStatistics.java b/src/main/java/org/opencord/igmpproxy/IgmpStatistics.java
index c7c4650..f330e9f 100644
--- a/src/main/java/org/opencord/igmpproxy/IgmpStatistics.java
+++ b/src/main/java/org/opencord/igmpproxy/IgmpStatistics.java
@@ -50,6 +50,32 @@
     private AtomicLong igmpMsgReceived = new AtomicLong();
     //Total number of invalid IGMP messages received
     private AtomicLong invalidIgmpMsgReceived = new AtomicLong();
+    //Counter for unknown igmp type
+    private AtomicLong unknownIgmpTypePacketsRxCounter = new AtomicLong();
+    // Counter for igmp report with wrong mode.
+    private AtomicLong reportsRxWithWrongModeCounter = new AtomicLong();
+    // Counter for failed join due to insufficient permission access
+    private AtomicLong failJoinReqInsuffPermissionAccessCounter = new AtomicLong();
+    // Counter for invalid group ip address i.e not a valid multicast address.
+    private AtomicLong failJoinReqUnknownMulticastIpCounter = new AtomicLong();
+    // Counter for unconfigured group
+    private AtomicLong unconfiguredGroupCounter = new AtomicLong();
+    // Counter for valid igmp packet
+    private AtomicLong validIgmpPacketCounter = new AtomicLong();
+    // Counter for current number of igmp channel joins
+    private AtomicLong igmpChannelJoinCounter = new AtomicLong();
+    // Counter for current group number
+    private AtomicLong currentGrpNumCounter = new AtomicLong();
+    // Counter for igmp Checksum
+    private AtomicLong igmpValidChecksumCounter = new AtomicLong();
+    // Counter for Invalid Igmp Length
+    private AtomicLong invalidIgmpLength = new AtomicLong();
+    //Total number of general IGMP membership query messages received
+    private AtomicLong igmpGeneralMembershipQuery = new AtomicLong();
+    //Total number of group specific IGMP membership query messages received
+    private AtomicLong igmpGrpSpecificMembershipQuery = new AtomicLong();
+    //Total number of group and source specific IGMP membership query messages received
+    private AtomicLong igmpGrpAndSrcSpecificMembershipQuery = new AtomicLong();
 
     public Long getIgmpJoinReq() {
         return igmpJoinReq.get();
@@ -156,4 +182,107 @@
         totalMsgReceived.incrementAndGet();
     }
 
+    public Long getValidIgmpPacketCounter() {
+        return validIgmpPacketCounter.get();
+    }
+
+    public void increaseValidIgmpPacketCounter() {
+        validIgmpPacketCounter.incrementAndGet();
+    }
+
+    public Long getCurrentGrpNumCounter() {
+        return currentGrpNumCounter.get();
+    }
+
+    public void increaseCurrentGrpNumCounter() {
+        currentGrpNumCounter.incrementAndGet();
+    }
+
+    public Long getIgmpChannelJoinCounter() {
+        return igmpChannelJoinCounter.get();
+    }
+    public Long getIgmpValidChecksumCounter() {
+        return igmpValidChecksumCounter.get();
+    }
+
+    public void increaseIgmpChannelJoinCounter() {
+        igmpChannelJoinCounter.incrementAndGet();
+    }
+
+    public void increaseIgmpValidChecksumCounter() {
+        igmpValidChecksumCounter.incrementAndGet();
+    }
+
+    public Long getUnconfiguredGroupCounter() {
+        return unconfiguredGroupCounter.get();
+    }
+
+    public void increaseUnconfiguredGroupCounter() {
+        unconfiguredGroupCounter.incrementAndGet();
+    }
+
+    public Long getFailJoinReqUnknownMulticastIpCounter() {
+        return failJoinReqUnknownMulticastIpCounter.get();
+    }
+
+    public void increaseFailJoinReqUnknownMulticastIpCounter() {
+        failJoinReqUnknownMulticastIpCounter.incrementAndGet();
+    }
+
+    public Long getFailJoinReqInsuffPermissionAccessCounter() {
+        return failJoinReqInsuffPermissionAccessCounter.get();
+    }
+
+    public void increaseFailJoinReqInsuffPermissionAccessCounter() {
+        failJoinReqInsuffPermissionAccessCounter.incrementAndGet();
+    }
+
+    public Long getReportsRxWithWrongModeCounter() {
+        return reportsRxWithWrongModeCounter.get();
+    }
+
+    public Long getUnknownIgmpTypePacketsRxCounter() {
+        return unknownIgmpTypePacketsRxCounter.get();
+    }
+
+    public void increaseUnknownIgmpTypePacketsRxCounter() {
+        unknownIgmpTypePacketsRxCounter.incrementAndGet();
+    }
+
+    public void increaseReportsRxWithWrongModeCounter() {
+        reportsRxWithWrongModeCounter.incrementAndGet();
+    }
+
+    public Long getInvalidIgmpLength() {
+        return invalidIgmpLength.get();
+    }
+
+    public void increaseInvalidIgmpLength() {
+        invalidIgmpLength.incrementAndGet();
+    }
+
+    public Long getIgmpGeneralMembershipQuery() {
+        return igmpGeneralMembershipQuery.get();
+    }
+
+    public Long getIgmpGrpSpecificMembershipQuery() {
+        return igmpGrpSpecificMembershipQuery.get();
+    }
+
+    public Long getIgmpGrpAndSrcSpecificMembershipQuery() {
+        return igmpGrpAndSrcSpecificMembershipQuery.get();
+    }
+
+    public void increaseIgmpGeneralMembershipQuery() {
+        igmpGeneralMembershipQuery.incrementAndGet();
+    }
+
+    public void increaseIgmpGrpSpecificMembershipQuery() {
+        igmpGrpSpecificMembershipQuery.incrementAndGet();
+    }
+
+    public void increaseIgmpGrpAndSrcSpecificMembershipQuery() {
+        igmpGrpAndSrcSpecificMembershipQuery.incrementAndGet();
+    }
+
 }