diff --git a/protocols/bgp/ctl/pom.xml b/protocols/bgp/ctl/pom.xml
index 2c0fa43..dabdd71 100755
--- a/protocols/bgp/ctl/pom.xml
+++ b/protocols/bgp/ctl/pom.xml
@@ -47,6 +47,11 @@
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.compendium</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-common</artifactId>
+            <version>4.0.36.Final</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java
index bbeea48..a0bac3e 100755
--- a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java
+++ b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpConfig.java
@@ -205,7 +205,7 @@
             lspeer.setSelfInnitConnection(true);
 
             if (lspeer.connectPeer() == null) {
-                connectPeer = new BgpConnectPeerImpl(bgpController, routerid, Controller.getBgpPortNum());
+                connectPeer = new BgpConnectPeerImpl(bgpController, routerid, Controller.BGP_PORT_NUM);
                 lspeer.setConnectPeer(connectPeer);
                 connectPeer.connectPeer();
             }
diff --git a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java
index 3d14465..6f992f4 100644
--- a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java
+++ b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BgpPeerImpl.java
@@ -159,8 +159,9 @@
      * Send flow specification update message to peer.
      *
      * @param operType operation type
+     * @param routeKey flow rule key
      * @param flowSpec flow specification details
-      * @param wideCommunity for route policy
+     * @param wideCommunity for route policy
      */
     public final void sendFlowSpecUpdateMessageToPeer(FlowSpecOperation operType, BgpFlowSpecRouteKey routeKey,
                                                       BgpFlowSpecNlri flowSpec, WideCommunity wideCommunity) {
diff --git a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java
index 32f03f9..72f803d 100755
--- a/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java
+++ b/protocols/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/Controller.java
@@ -16,7 +16,7 @@
 package org.onosproject.bgp.controller.impl;
 
 import static org.onlab.util.Tools.groupedThreads;
-
+import io.netty.util.internal.PlatformDependent;
 import java.lang.management.ManagementFactory;
 import java.lang.management.RuntimeMXBean;
 import java.net.InetSocketAddress;
@@ -53,9 +53,11 @@
     public Channel serverChannel;
 
     // Configuration options
-    private static final short BGP_PORT_NUM = 179;
+    protected static final short BGP_PORT_NUM = 179;
+    private static final short BGP_PRIVILEGED_PORT = 1790; // server port used for non root users in linux
     private static final short PORT_NUM_ZERO = 0;
     private static boolean isPortNumSet = false;
+    private static short portNumber = BGP_PORT_NUM;
     private final int workerThreads = 16;
     private final int peerWorkerThreads = 16;
 
@@ -219,6 +221,11 @@
      */
     public void start() {
         log.info("Started");
+        if (!PlatformDependent.isWindows() && !PlatformDependent.isRoot()) {
+            portNumber = BGP_PRIVILEGED_PORT;
+        } else {
+            portNumber = BGP_PORT_NUM;
+        }
         this.init();
         this.run();
     }
@@ -242,7 +249,8 @@
         if (isPortNumSet) {
             return PORT_NUM_ZERO;
         }
-        return BGP_PORT_NUM;
+
+        return portNumber;
     }
 
     /**
