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
