BGP flow spec system test update message parsing issues fix.

Change-Id: Ic2d615e1f449e93d937802ce3f9f33e468d42423
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpExtendedCommunity.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpExtendedCommunity.java
index 31a85da..7dee922 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpExtendedCommunity.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpExtendedCommunity.java
@@ -105,9 +105,9 @@
                     default: log.debug("Other type Not Supported:" + actionType);
                         break;
                 }
-            }
-            if (fsActionTlv != null) {
-                fsActionTlvs.add(fsActionTlv);
+                if (fsActionTlv != null) {
+                    fsActionTlvs.add(fsActionTlv);
+                }
             }
         }
         return new BgpExtendedCommunity(fsActionTlvs);
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionReDirect.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionReDirect.java
index 87f180d..cc15992 100755
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionReDirect.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionReDirect.java
@@ -30,6 +30,7 @@
 
     public static final short TYPE = Constants.BGP_FLOWSPEC_ACTION_TRAFFIC_REDIRECT;
     private byte[] routeTarget;
+    public static final byte ROUTE_TARGET_LEN = 6;
 
     /**
      * Constructor to initialize the value.
@@ -82,9 +83,8 @@
      */
     public static BgpFsActionReDirect read(ChannelBuffer cb) throws BgpParseException {
         byte[] routeTarget;
-        ChannelBuffer tempCb = cb.copy();
 
-        routeTarget = tempCb.readBytes(tempCb.readableBytes()).array();
+        routeTarget = cb.readBytes(ROUTE_TARGET_LEN).array();
         return new BgpFsActionReDirect(routeTarget);
     }
 
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficAction.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficAction.java
index 4cedb6a..eb6280b 100755
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficAction.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficAction.java
@@ -30,6 +30,7 @@
 
     public static final short TYPE = Constants.BGP_FLOWSPEC_ACTION_TRAFFIC_ACTION;
     private byte[] bitMask;
+    public static final byte BIT_MASK_LEN = 6;
 
     /**
      * Constructor to initialize the value.
@@ -82,9 +83,8 @@
      */
     public static BgpFsActionTrafficAction read(ChannelBuffer cb) throws BgpParseException {
         byte[] bitMask;
-        ChannelBuffer tempCb = cb.copy();
 
-        bitMask = tempCb.readBytes(tempCb.readableBytes()).array();
+        bitMask = cb.readBytes(BIT_MASK_LEN).array();
         return new BgpFsActionTrafficAction(bitMask);
     }
 
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficMarking.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficMarking.java
index 6aee0f4..dbc399c 100755
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficMarking.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficMarking.java
@@ -30,6 +30,7 @@
 
     public static final short TYPE = Constants.BGP_FLOWSPEC_ACTION_TRAFFIC_MARKING;
     private byte[] dscpValue;
+    public static final byte DSCP_LEN = 6;
 
     /**
      * Constructor to initialize the value.
@@ -82,9 +83,8 @@
      */
     public static BgpFsActionTrafficMarking read(ChannelBuffer cb) throws BgpParseException {
         byte[] dscpValue;
-        ChannelBuffer tempCb = cb.copy();
 
-        dscpValue = tempCb.readBytes(tempCb.readableBytes()).array();
+        dscpValue = cb.readBytes(DSCP_LEN).array();
         return new BgpFsActionTrafficMarking(dscpValue);
     }
 
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficRate.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficRate.java
index 8f77ff0..93d024b 100755
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficRate.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpFsActionTrafficRate.java
@@ -86,10 +86,9 @@
     public static BgpFsActionTrafficRate read(ChannelBuffer cb) throws BgpParseException {
         short asn;
         float rate;
-        ChannelBuffer tempCb = cb.copy();
 
-        asn = tempCb.readShort();
-        rate = tempCb.readFloat();
+        asn = cb.readShort();
+        rate = cb.readFloat();
         return new BgpFsActionTrafficRate(asn, rate);
     }
 
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java
index 89f2f3d..a93725e 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java
@@ -239,7 +239,7 @@
                             flowSpecComponent = BgpFsIcmpType.read(tempBuf);
                             break;
                         case Constants.BGP_FLOWSPEC_ICMP_CD:
-                            flowSpecComponent = BgpFsIcmpType.read(tempBuf);
+                            flowSpecComponent = BgpFsIcmpCode.read(tempBuf);
                             break;
                         case Constants.BGP_FLOWSPEC_TCP_FLAGS:
                             flowSpecComponent = BgpFsTcpFlags.read(tempBuf);