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;
     }
 
     /**
