4 Octet AS Path Capability is sent to neighbor.
4 Octet AS in AS_PATH is parsed.
Now BGP can establish 4 Octet AS Path enabled peering with neighbor.

Change-Id: Ibb72e8037554928584ccafe6a14b82ffaca7e2cd
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
index 59d0385..52c6827 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSession.java
@@ -66,6 +66,7 @@
     private boolean remoteIpv4Multicast;        // Peer IPv4/MULTICAST AFI/SAFI
     private boolean remoteIpv6Unicast;          // Peer IPv6/UNICAST AFI/SAFI
     private boolean remoteIpv6Multicast;        // Peer IPv6/MULTICAST AFI/SAFI
+    private boolean remoteAs4OctetCapability;   // Peer 4 octet AS path capability
     //
     private SocketAddress localAddress;         // Local IP addr/port
     private Ip4Address localIp4Address;         // Local IPv4 address
@@ -77,6 +78,7 @@
     private boolean localIpv4Multicast;      // Local IPv4/MULTICAST AFI/SAFI
     private boolean localIpv6Unicast;        // Local IPv6/UNICAST AFI/SAFI
     private boolean localIpv6Multicast;      // Local IPv6/MULTICAST AFI/SAFI
+    private boolean localAs4OctetCapability;    // Local 4 octet AS path capability
     //
     private long localKeepaliveInterval;        // Keepalive interval
 
@@ -188,7 +190,7 @@
         // In the future the local AS number should be configured as part
         // of an explicit BGP peering configuration.
         //
-        this.localAs = remoteAs;
+        setLocalAs(remoteAs);
     }
 
     /**
@@ -330,6 +332,47 @@
     }
 
     /**
+     * Gets the BGP session remote 4 octet AS path capability.
+     *
+     * @return true when the BGP session remote has 4 octet AS path capability
+     */
+    public boolean getRemoteAs4OctetCapability() {
+        return remoteAs4OctetCapability;
+    }
+
+    /**
+     * Sets the BGP session remote 4 octet AS path capability.
+     */
+    void setRemoteAs4OctetCapability() {
+        this.remoteAs4OctetCapability = true;
+    }
+
+    /**
+     * Gets the BGP session local 4 octet AS path capability.
+     *
+     * @return true when the BGP session local has 4 octet AS path capability
+     */
+    public boolean getLocalAs4OctetCapability() {
+        return localAs4OctetCapability;
+    }
+
+    /**
+     * Sets the BGP session local 4 octet AS path capability.
+     */
+    void setLocalAs4OctetCapability() {
+        this.localAs4OctetCapability = true;
+    }
+
+    /**
+     * Gets the BGP session 4 octet AS path capability.
+     *
+     * @return true when the BGP session is 4 octet AS path capable
+     */
+    public boolean isAs4OctetCapable() {
+        return getRemoteAs4OctetCapability() && getLocalAs4OctetCapability();
+    }
+
+    /**
      * Gets the BGP session local address.
      *
      * @return the BGP session local address
@@ -366,6 +409,15 @@
     }
 
     /**
+     * Sets the BGP session local AS number.
+     *
+     * @param localAs the BGP session local AS number to set
+     */
+    public void setLocalAs(long localAs) {
+        this.localAs = localAs;
+    }
+
+    /**
      * Gets the BGP session local Holdtime.
      *
      * @return the BGP session local Holdtime