Solves the following- 63/43263/3
authorMufaddal Makati <m.makati@cablelabs.com>
Fri, 5 Aug 2016 23:16:23 +0000 (17:16 -0600)
committerRyan Vail <r.vail@cablelabs.com>
Thu, 11 Aug 2016 21:55:49 +0000 (21:55 +0000)
Mutlimedia Transaction Identifier does not change.
On each start of the ODL PacketCable plugin instance, it appears that a
single MM Transaction ID is set and it NEVER changes.

Change-Id: I57789d01165c1e31509924bd6f6b1d7ceb4fcbb6
Signed-off-by: Mufaddal Makati <m.makati@cablelabs.com>
packetcable-driver/src/main/java/org/pcmm/PCMMPdpMsgSender.java

index d1560646928fb2a7f04e8dd1530ac2d3502be0c2..aa86745462ab5276577d4e8f7465e0c546501cba 100644 (file)
@@ -51,8 +51,9 @@ import java.util.Set;
 public class PCMMPdpMsgSender extends COPSMsgSender {
 
     public final static Logger logger = LoggerFactory.getLogger(PCMMPdpMsgSender.class);
-
-    protected final short _transactionID;
+       private static final int MAX_TRANSACTION_ID = 65_536;
+       
+    protected short _transactionID;
     protected final short _classifierID;
 
     // XXX - this does not need to be here
@@ -75,7 +76,7 @@ public class PCMMPdpMsgSender extends COPSMsgSender {
     public PCMMPdpMsgSender(final short clientType, final short tID, final COPSHandle clientHandle,
                             final Socket sock) {
         super(clientType, clientHandle, sock);
-        _transactionID = tID == 0 ? (short) (Math.random() * hashCode()) : tID;
+        _transactionID = tID == 0 ? generateNewTransactionID() : tID;
         _classifierID = 0;
     }
 
@@ -95,13 +96,15 @@ public class PCMMPdpMsgSender extends COPSMsgSender {
      */
     public void sendGateSet(final IPCMMGate gate) throws COPSPdpException {
         // set transaction ID to gate set
+       // generate a new TransactionID
+       _transactionID = generateNewTransactionID();
         final ITransactionID trID = new TransactionID(_transactionID, GateCommandType.GATE_SET);
-
+       
         gate.setTransactionID(trID);
         // retain the transactitrIDnumonId to gate request mapping for gateID recovery after response
         // see PCMMPdpReqStateMan.processReport()
         final Short trIDnum = trID.getTransactionIdentifier();
-        logger.info("Adding gate to cache - " + gate + " with key - " + trIDnum);
+        logger.info("Adding gate to cache - " + gate + " with key - " + (int) (trIDnum & 0xffff));
         PCMMGlobalConfig.transactionGateMap.put(trIDnum, gate);
 
         // new pcmm specific clientsi
@@ -162,8 +165,11 @@ public class PCMMPdpMsgSender extends COPSMsgSender {
      */
     public void sendGateDelete(final IPCMMGate gate) throws COPSPdpException {
         // set transaction ID to gate set
+        // generate a new TransactionID
+       short _transactionID = generateNewTransactionID();
         final ITransactionID trID = new TransactionID(_transactionID, GateCommandType.GATE_DELETE);
-        gate.setTransactionID(trID);
+        
+       gate.setTransactionID(trID);
 
         Short trIDnum = trID.getTransactionIdentifier();
         PCMMGlobalConfig.transactionGateMap.put(trIDnum, gate);
@@ -232,13 +238,17 @@ public class PCMMPdpMsgSender extends COPSMsgSender {
          * <Gate-Info> ::= <Common Header> [<Client Handle>] [<Integrity>]
          */
        
-       // added 
-        final ITransactionID trID = new TransactionID(_transactionID, GateCommandType.GATE_INFO);
+       // added
+        // generate a new TransactionID
+       short _transactionID = generateNewTransactionID();
+       final ITransactionID trID = new TransactionID(_transactionID, GateCommandType.GATE_INFO);
+        
+        
         gate.setTransactionID(trID);
         // retain the transactionId to gate request mapping for gateID recovery after response
         // see PCMMPdpReqStateMan.processReport()
         final Short trIDnum = trID.getTransactionIdentifier();
-        logger.info("Adding gate to cache - " + gate + " with key - " + trIDnum);
+        logger.info("Adding gate to cache - " + gate + " with key - " + (int) (trIDnum & 0xffff));
         PCMMGlobalConfig.transactionGateMap.put(trIDnum, gate);
         
         // gateDelete only requires AMID, subscriberID, and gateID
@@ -294,4 +304,7 @@ public class PCMMPdpMsgSender extends COPSMsgSender {
     // XXX - Temp
     public void sendDeleteRequestState() throws COPSPdpException {
     }
+       private static short generateNewTransactionID() {
+           return (short) (Math.random() * MAX_TRANSACTION_ID);
+       }
 }