BGP AS number issue fixes.

Change-Id: I204fdbc4f54917448b79bba453015f64283da125
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java
index f762852..a8f48cb 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpOpenMsg.java
@@ -47,7 +47,7 @@
      *
      * @return AS Number of Open Message
      */
-    short getAsNumber();
+    long getAsNumber();
 
     /**
      * Returns BGP Identifier of Open Message.
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java
index a273b99..5ab79fe 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BgpOpenMsgVer4.java
@@ -84,7 +84,7 @@
         (short) OPEN_MSG_MINIMUM_LENGTH, (byte) 0X01);
     private BgpHeader bgpMsgHeader;
     private byte version;
-    private short asNumber;
+    private long asNumber;
     private short holdTime;
     private int bgpId;
     private boolean isLargeAsCapabilitySet;
@@ -114,7 +114,7 @@
      * @param bgpId BGP identifier in open message
      * @param capabilityTlv capabilities in open message
      */
-    public BgpOpenMsgVer4(BgpHeader bgpMsgHeader, byte version, short asNumber, short holdTime,
+    public BgpOpenMsgVer4(BgpHeader bgpMsgHeader, byte version, long asNumber, short holdTime,
              int bgpId, LinkedList<BgpValueType> capabilityTlv) {
         this.bgpMsgHeader = bgpMsgHeader;
         this.version = version;
@@ -145,7 +145,7 @@
     }
 
     @Override
-    public short getAsNumber() {
+    public long getAsNumber() {
         return this.asNumber;
     }
 
@@ -169,7 +169,7 @@
 
             byte version;
             short holdTime;
-            short asNumber;
+            long asNumber;
             int bgpId;
             byte optParaLen = 0;
             byte optParaType;
@@ -191,8 +191,8 @@
             }
 
             // Read AS number
-            asNumber = cb.readShort();
-
+            asNumber = cb.getUnsignedShort(cb.readerIndex());
+            cb.readShort();
             // Read Hold timer
             holdTime = cb.readShort();
 
@@ -497,7 +497,7 @@
                 cb.writeShort(AS_TRANS);
             } else {
                 // write AS number in next 2-octet
-                cb.writeShort(message.asNumber);
+                cb.writeShort((short) message.asNumber);
             }
 
             // write HoldTime in next 2-octet
diff --git a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java b/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java
index 262e4f5..f185f65 100644
--- a/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java
+++ b/providers/bgp/cfg/src/main/java/org/onosproject/provider/bgp/cfg/impl/BgpAppConfig.java
@@ -169,12 +169,12 @@
     public boolean validateFlowSpec() {
         if (flowSpecCapability() != null) {
             String flowSpec = flowSpecCapability();
-            if ((flowSpec.equals("IPV4")) || (flowSpec.equals("VPNV4")) || (flowSpec.equals("IPV4_VPNV4"))) {
-                return true;
+            if ((!flowSpec.equals("IPV4")) && (!flowSpec.equals("VPNV4")) && (!flowSpec.equals("IPV4_VPNV4"))) {
+                return false;
             }
         }
 
-        return false;
+        return true;
     }
 
     /**