diff --git a/openbsc/include/openbsc/gb_proxy.h b/openbsc/include/openbsc/gb_proxy.h
index 40c88d2..ed1ac2d 100644
--- a/openbsc/include/openbsc/gb_proxy.h
+++ b/openbsc/include/openbsc/gb_proxy.h
@@ -10,11 +10,6 @@
 
 struct gbproxy_config {
 	/* parsed from config file */
-	u_int32_t nsip_listen_ip;
-	u_int16_t nsip_listen_port;
-
-	int frgre_enabled;
-
 	u_int16_t nsip_sgsn_nsei;
 
 	/* misc */
diff --git a/openbsc/include/openbsc/gprs_ns.h b/openbsc/include/openbsc/gprs_ns.h
index 319ff3d..1ec6631 100644
--- a/openbsc/include/openbsc/gprs_ns.h
+++ b/openbsc/include/openbsc/gprs_ns.h
@@ -134,10 +134,14 @@
 	/* NS-over-IP specific bits */
 	struct {
 		struct bsc_fd fd;
+		uint32_t local_ip;
+		uint16_t local_port;
 	} nsip;
 	/* NS-over-FR-over-GRE-over-IP specific bits */
 	struct {
 		struct bsc_fd fd;
+		uint32_t local_ip;
+		int enabled:1;
 	} frgre;
 };
 
@@ -188,7 +192,7 @@
 void gprs_ns_destroy(struct gprs_ns_inst *nsi);
 
 /* Listen for incoming GPRS packets via NS/UDP */
-int nsip_listen(struct gprs_ns_inst *nsi, uint32_t ip, uint16_t udp_port);
+int gprs_ns_nsip_listen(struct gprs_ns_inst *nsi);
 
 struct sockaddr_in;
 
@@ -200,7 +204,7 @@
 int gprs_ns_tx_unblock(struct gprs_nsvc *nsvc);
 
 /* Listen for incoming GPRS packets via NS/FR/GRE */
-int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi, uint32_t ip);
+int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi);
 
 /* Establish a connection (from the BSS) to the SGSN */
 struct gprs_nsvc *nsip_connect(struct gprs_ns_inst *nsi,
diff --git a/openbsc/include/openbsc/sgsn.h b/openbsc/include/openbsc/sgsn.h
index a90a864..1ce608a 100644
--- a/openbsc/include/openbsc/sgsn.h
+++ b/openbsc/include/openbsc/sgsn.h
@@ -10,8 +10,6 @@
 
 struct sgsn_config {
 	/* parsed from config file */
-	u_int32_t nsip_listen_ip;
-	u_int16_t nsip_listen_port;
 
 	char *gtp_statedir;
 	struct sockaddr_in gtp_listenaddr;
diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index 1b39a2e..71d6086 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -238,20 +238,17 @@
 		exit(2);
 	}
 
-	rc = nsip_listen(bssgp_nsi, gbcfg.nsip_listen_ip,
-			 gbcfg.nsip_listen_port);
+	rc = gprs_ns_nsip_listen(bssgp_nsi);
 	if (rc < 0) {
 		LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on NSIP socket\n");
 		exit(2);
 	}
 
-	if (gbcfg.frgre_enabled) {
-		rc = gprs_ns_frgre_listen(bssgp_nsi, gbcfg.nsip_listen_ip);
-		if (rc < 0) {
-			LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen GRE "
-				"socket. Do you have CAP_NET_RAW?\n");
-			exit(2);
-		}
+	rc = gprs_ns_frgre_listen(bssgp_nsi);
+	if (rc < 0) {
+		LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen GRE "
+			"socket. Do you have CAP_NET_RAW?\n");
+		exit(2);
 	}
 
 	/* Reset all the persistent NS-VCs that we've read from the config */
diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c
index 4b71b1b..e761720 100644
--- a/openbsc/src/gprs/gb_proxy_vty.c
+++ b/openbsc/src/gprs/gb_proxy_vty.c
@@ -51,14 +51,7 @@
 
 	vty_out(vty, "gbproxy%s", VTY_NEWLINE);
 
-	if (g_cfg->nsip_listen_ip) {
-		ia.s_addr = htonl(g_cfg->nsip_listen_ip);
-		vty_out(vty, " nsip bss local ip %s%s", inet_ntoa(ia),
-			VTY_NEWLINE);
-	}
-	vty_out(vty, " nsip bss local port %u%s", g_cfg->nsip_listen_port,
-		VTY_NEWLINE);
-	vty_out(vty, " nsip sgsn nsei %u%s", g_cfg->nsip_sgsn_nsei,
+	vty_out(vty, " sgsn nsei %u%s", g_cfg->nsip_sgsn_nsei,
 		VTY_NEWLINE);
 
 	return CMD_SUCCESS;
@@ -73,33 +66,9 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_nsip_bss_local_ip,
-      cfg_nsip_bss_local_ip_cmd,
-      "nsip bss local ip A.B.C.D",
-      "Set the IP address on which we listen for BSS connects")
-{
-	struct in_addr ia;
-
-	inet_aton(argv[0], &ia);
-	g_cfg->nsip_listen_ip = ntohl(ia.s_addr);
-
-	return CMD_SUCCESS;
-}
-
-DEFUN(cfg_nsip_bss_local_port,
-      cfg_nsip_bss_local_port_cmd,
-      "nsip bss local port <0-65534>",
-      "Set the UDP port on which we listen for BSS connects")
-{
-	unsigned int port = atoi(argv[0]);
-
-	g_cfg->nsip_listen_port = port;
-	return CMD_SUCCESS;
-}
-
 DEFUN(cfg_nsip_sgsn_nsei,
       cfg_nsip_sgsn_nsei_cmd,
-      "nsip sgsn nsei <0-65534>",
+      "sgsn nsei <0-65534>",
       "Set the NSEI to be used in the connection with the SGSN")
 {
 	unsigned int port = atoi(argv[0]);
@@ -117,8 +86,6 @@
 	install_default(GBPROXY_NODE);
 	install_element(GBPROXY_NODE, &ournode_exit_cmd);
 	install_element(GBPROXY_NODE, &ournode_end_cmd);
-	install_element(GBPROXY_NODE, &cfg_nsip_bss_local_ip_cmd);
-	install_element(GBPROXY_NODE, &cfg_nsip_bss_local_port_cmd);
 	install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsei_cmd);
 
 	return 0;
diff --git a/openbsc/src/gprs/gprs_ns.c b/openbsc/src/gprs/gprs_ns.c
index 4ef3603..8b226b8 100644
--- a/openbsc/src/gprs/gprs_ns.c
+++ b/openbsc/src/gprs/gprs_ns.c
@@ -903,11 +903,12 @@
 }
 
 /* Listen for incoming GPRS packets */
-int nsip_listen(struct gprs_ns_inst *nsi, uint32_t ip, uint16_t udp_port)
+int gprs_ns_nsip_listen(struct gprs_ns_inst *nsi)
 {
 	int ret;
 
-	ret = make_sock(&nsi->nsip.fd, IPPROTO_UDP, ip, udp_port, nsip_fd_cb);
+	ret = make_sock(&nsi->nsip.fd, IPPROTO_UDP, nsi->nsip.local_ip,
+			nsi->nsip.local_port, nsip_fd_cb);
 	if (ret < 0)
 		return ret;
 
diff --git a/openbsc/src/gprs/gprs_ns_frgre.c b/openbsc/src/gprs/gprs_ns_frgre.c
index d58c1d9..979442b 100644
--- a/openbsc/src/gprs/gprs_ns_frgre.c
+++ b/openbsc/src/gprs/gprs_ns_frgre.c
@@ -202,7 +202,7 @@
 	return rc;
 }
 
-int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi, uint32_t ip)
+int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi)
 {
 	int rc;
 
@@ -210,7 +210,11 @@
 	if (nsi->frgre.fd.fd)
 		close(nsi->frgre.fd.fd);
 
-	rc = make_sock(&nsi->frgre.fd, IPPROTO_GRE, ip, 0, nsfrgre_fd_cb);
+	if (!nsi->frgre.enabled)
+		return 0;
+
+	rc = make_sock(&nsi->frgre.fd, IPPROTO_GRE, nsi->frgre.local_ip,
+			0, nsfrgre_fd_cb);
 	if (rc < 0) {
 		LOGP(DNS, LOGL_ERROR, "Error creating GRE socket (%s)\n",
 			strerror(errno));
diff --git a/openbsc/src/gprs/gprs_ns_vty.c b/openbsc/src/gprs/gprs_ns_vty.c
index 7d43944..1922b02 100644
--- a/openbsc/src/gprs/gprs_ns_vty.c
+++ b/openbsc/src/gprs/gprs_ns_vty.c
@@ -68,6 +68,7 @@
 {
 	struct gprs_nsvc *nsvc;
 	unsigned int i;
+	struct in_addr ia;
 
 	vty_out(vty, "ns%s", VTY_NEWLINE);
 
@@ -111,6 +112,21 @@
 			get_value_string(gprs_ns_timer_strs, i),
 			vty_nsi->timeout[i], VTY_NEWLINE);
 
+	if (vty_nsi->nsip.local_ip) {
+		ia.s_addr = htonl(vty_nsi->nsip.local_ip);
+		vty_out(vty, " encapsulation udp local-ip %s%s",
+			inet_ntoa(ia), VTY_NEWLINE);
+		vty_out(vty, " encapsulation udp local-port %u%s",
+			vty_nsi->nsip.local_port);
+	}
+	vty_out(vty, " encapsulation framerelay-gre enabled %u%s",
+		vty_nsi->frgre.enabled ? 1 : 0, VTY_NEWLINE);
+	if (vty_nsi->frgre.enabled) {
+		ia.s_addr = htonl(vty_nsi->frgre.local_ip);
+		vty_out(vty, " encapsulation framerelay-gre local-ip %s%s",
+			inet_ntoa(ia), VTY_NEWLINE);
+	}
+
 	return CMD_SUCCESS;
 }
 
@@ -142,6 +158,15 @@
 static void dump_ns(struct vty *vty, struct gprs_ns_inst *nsi, int stats)
 {
 	struct gprs_nsvc *nsvc;
+	struct in_addr ia;
+
+	ia.s_addr = htonl(vty_nsi->nsip.local_ip);
+	vty_out(vty, "NS-UDP-IP Encapsulation: Local IP: %s, UDP Port: %u%s",
+		inet_ntoa(ia), vty_nsi->nsip.local_port, VTY_NEWLINE);
+
+	ia.s_addr = htonl(vty_nsi->frgre.local_ip);
+	vty_out(vty, "NS-FR-GRE-IP Encapsulation: Local IP: %s%s",
+		inet_ntoa(ia), VTY_NEWLINE);
 
 	llist_for_each_entry(nsvc, &nsi->gprs_nsvcs, list) {
 		if (nsvc == nsi->unknown_nsvc)
@@ -387,6 +412,66 @@
 	return CMD_SUCCESS;
 }
 
+#define ENCAPS_STR "NS encapsulation options\n"
+
+DEFUN(cfg_nsip_local_ip, cfg_nsip_local_ip_cmd,
+      "encapsulation udp local-ip A.B.C.D",
+	ENCAPS_STR "NS over UDP Encapsulation\n"
+	"Set the IP address on which we listen for NS/UDP\n"
+	"IP Address\n")
+{
+	struct in_addr ia;
+
+	inet_aton(argv[0], &ia);
+	vty_nsi->nsip.local_ip = ntohl(ia.s_addr);
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_nsip_local_port, cfg_nsip_local_port_cmd,
+      "encapsulation udp local-port <0-65535>",
+	ENCAPS_STR "NS over UDP Encapsulation\n"
+	"Set the UDP port on which we listen for NS/UDP\n"
+	"UDP port number\n")
+{
+	unsigned int port = atoi(argv[0]);
+
+	vty_nsi->nsip.local_port = port;
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_frgre_local_ip, cfg_frgre_local_ip_cmd,
+      "encapsulation framerelay-gre local-ip A.B.C.D",
+	ENCAPS_STR "NS over Frame Relay over GRE Encapsulation\n"
+	"Set the IP address on which we listen for NS/FR/GRE\n"
+	"IP Address\n")
+{
+	struct in_addr ia;
+
+	if (!vty_nsi->frgre.enabled) {
+		vty_out(vty, "FR/GRE is not enabled%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+	inet_aton(argv[0], &ia);
+	vty_nsi->frgre.local_ip = ntohl(ia.s_addr);
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_frgre_enable, cfg_frgre_enable_cmd,
+      "encapsulation framerelay-gre enabled (1|0)",
+	ENCAPS_STR "NS over Frame Relay over GRE Encapsulation\n"
+	"Enable or disable Frame Relay over GRE\n"
+	"Enable\n" "Disable\n")
+{
+	int enabled = atoi(argv[0]);
+
+	vty_nsi->frgre.enabled = enabled;
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(nsvc_nsei, nsvc_nsei_cmd,
 	"nsvc nsei <0-65535> (block|unblock|reset)",
 	"Perform an operation on a NSVC\n"
@@ -472,6 +557,10 @@
 	install_element(NS_NODE, &cfg_nse_remoterole_cmd);
 	install_element(NS_NODE, &cfg_no_nse_cmd);
 	install_element(NS_NODE, &cfg_ns_timer_cmd);
+	install_element(NS_NODE, &cfg_nsip_local_ip_cmd);
+	install_element(NS_NODE, &cfg_nsip_local_port_cmd);
+	install_element(NS_NODE, &cfg_frgre_enable_cmd);
+	install_element(NS_NODE, &cfg_frgre_local_ip_cmd);
 
 	install_element(ENABLE_NODE, &nsvc_nsei_cmd);
 
diff --git a/openbsc/src/gprs/osmo_gbproxy.cfg b/openbsc/src/gprs/osmo_gbproxy.cfg
index 79f391f..d6b5619 100644
--- a/openbsc/src/gprs/osmo_gbproxy.cfg
+++ b/openbsc/src/gprs/osmo_gbproxy.cfg
@@ -6,11 +6,19 @@
  no login
 !
 gbproxy
- nsip bss local port 23000
- nsip sgsn nsei 101
+ sgsn nsei 101
 ns
  nse 101 nsvci 101
- nse 101 remote-ip 192.168.100.239
- nse 101 remote-port 7777
  nse 101 remote-role sgsn
  nse 101 encapsulation udp
+ nse 101 remote-ip 192.168.100.239
+ nse 101 remote-port 7777
+ timer tns-block 3
+ timer tns-block-retries 3
+ timer tns-reset 3
+ timer tns-reset-retries 3
+ timer tns-test 30
+ timer tns-alive 3
+ timer tns-alive-retries 10
+ encapsulation framerelay-gre enabled 1
+ encapsulation framerelay-gre local-ip 0.0.0.0
diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c
index 63ef9f5..1956428 100644
--- a/openbsc/src/gprs/sgsn_main.c
+++ b/openbsc/src/gprs/sgsn_main.c
@@ -175,8 +175,9 @@
 	if (rc)
 		exit(2);
 
-	nsip_listen(sgsn_nsi, sgsn_inst.cfg.nsip_listen_ip,
-		    sgsn_inst.cfg.nsip_listen_port);
+	rc = gprs_ns_nsip_listen(sgsn_nsi);
+	if (rc)
+		exit(2);
 
 	while (1) {
 		rc = bsc_select_main(0);
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
index a065ba4..2532a88 100644
--- a/openbsc/src/gprs/sgsn_vty.c
+++ b/openbsc/src/gprs/sgsn_vty.c
@@ -54,18 +54,10 @@
 
 	vty_out(vty, "sgsn%s", VTY_NEWLINE);
 
-	if (g_cfg->nsip_listen_ip) {
-		ia.s_addr = htonl(g_cfg->nsip_listen_ip);
-		vty_out(vty, "  nsip local ip %s%s", inet_ntoa(ia),
-			VTY_NEWLINE);
-	}
-	vty_out(vty, "  nsip local port %u%s", g_cfg->nsip_listen_port,
-		VTY_NEWLINE);
-
 	llist_for_each_entry(gctx, &sgsn_ggsn_ctxts, list) {
-		vty_out(vty, "  ggsn %u remote-ip %s%s", gctx->id,
+		vty_out(vty, " ggsn %u remote-ip %s%s", gctx->id,
 			inet_ntoa(gctx->remote_addr), VTY_NEWLINE);
-		vty_out(vty, "  ggsn %u gtp-version %u%s", gctx->id,
+		vty_out(vty, " ggsn %u gtp-version %u%s", gctx->id,
 			gctx->gtp_version, VTY_NEWLINE);
 	}
 
@@ -81,32 +73,6 @@
 	return CMD_SUCCESS;
 }
 
-
-DEFUN(cfg_nsip_local_ip,
-      cfg_nsip_local_ip_cmd,
-      "nsip local ip A.B.C.D",
-      "Set the IP address on which we listen for BSS connects")
-{
-	struct in_addr ia;
-
-	inet_aton(argv[0], &ia);
-	g_cfg->nsip_listen_ip = ntohl(ia.s_addr);
-
-	return CMD_SUCCESS;
-}
-
-DEFUN(cfg_nsip_local_port,
-      cfg_nsip_local_port_cmd,
-      "nsip local port <0-65534>",
-      "Set the UDP port on which we listen for BSS connects")
-{
-	unsigned int port = atoi(argv[0]);
-
-	g_cfg->nsip_listen_port = port;
-
-	return CMD_SUCCESS;
-}
-
 DEFUN(cfg_ggsn_remote_ip, cfg_ggsn_remote_ip_cmd,
 	"ggsn <0-255> remote-ip A.B.C.D",
 	"")
@@ -288,8 +254,6 @@
 	install_default(SGSN_NODE);
 	install_element(SGSN_NODE, &ournode_exit_cmd);
 	install_element(SGSN_NODE, &ournode_end_cmd);
-	install_element(SGSN_NODE, &cfg_nsip_local_ip_cmd);
-	install_element(SGSN_NODE, &cfg_nsip_local_port_cmd);
 	install_element(SGSN_NODE, &cfg_ggsn_remote_ip_cmd);
 	//install_element(SGSN_NODE, &cfg_ggsn_remote_port_cmd);
 	install_element(SGSN_NODE, &cfg_ggsn_gtp_version_cmd);
