diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index 02b3181..68d07ae 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -188,7 +188,6 @@
 int main(int argc, char **argv)
 {
 	struct gsm_network dummy_network;
-	struct sockaddr_in sin;
 	int rc;
 
 	tall_bsc_ctx = talloc_named_const(NULL, 0, "nsip_proxy");
@@ -207,7 +206,7 @@
 
 	vty_init("Osmocom Gb Proxy", PACKAGE_VERSION, openbsc_copyright);
 	logging_vty_add_cmds();
-        gbproxy_vty_init();
+	gbproxy_vty_init();
 
 	handle_options(argc, argv);
 
@@ -232,15 +231,18 @@
 		exit(2);
 	}
 
-	nsip_listen(bssgp_nsi, gbcfg.nsip_listen_port);
+	if (!nsvc_by_nsei(gbcfg.nsi, gbcfg.nsip_sgsn_nsei)) {
+		LOGP(DGPRS, LOGL_FATAL, "You cannot proxy to NSEI %u "
+			"without creating that NSEI before\n",
+			gbcfg.nsip_sgsn_nsei);
+		exit(2);
+	}
 
-	/* 'establish' the outgoing connection to the SGSN */
-	sin.sin_family = AF_INET;
-	sin.sin_port = htons(gbcfg.nsip_sgsn_port);
-	sin.sin_addr.s_addr = htonl(gbcfg.nsip_sgsn_ip);
-	nsip_connect(bssgp_nsi, &sin, gbcfg.nsip_sgsn_nsei,
-			gbcfg.nsip_sgsn_nsvci);
-
+	rc = nsip_listen(bssgp_nsi, gbcfg.nsip_listen_port);
+	if (rc < 0) {
+		LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on NSIP socket\n");
+		exit(2);
+	}
 
 	/* Reset all the persistent NS-VCs that we've read from the config */
 	gbprox_reset_persistent_nsvcs(bssgp_nsi);
diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c
index 7ee2833..4b71b1b 100644
--- a/openbsc/src/gprs/gb_proxy_vty.c
+++ b/openbsc/src/gprs/gb_proxy_vty.c
@@ -58,15 +58,8 @@
 	}
 	vty_out(vty, " nsip bss local port %u%s", g_cfg->nsip_listen_port,
 		VTY_NEWLINE);
-	ia.s_addr = htonl(g_cfg->nsip_sgsn_ip);
-	vty_out(vty, " nsip sgsn remote ip %s%s", inet_ntoa(ia),
-		VTY_NEWLINE);
-	vty_out(vty, " nsip sgsn remote port %u%s", g_cfg->nsip_sgsn_port,
-		VTY_NEWLINE);
 	vty_out(vty, " nsip sgsn nsei %u%s", g_cfg->nsip_sgsn_nsei,
 		VTY_NEWLINE);
-	vty_out(vty, " nsip sgsn nsvci %u%s", g_cfg->nsip_sgsn_nsvci,
-		VTY_NEWLINE);
 
 	return CMD_SUCCESS;
 }
@@ -104,31 +97,6 @@
 	return CMD_SUCCESS;
 }
 
-
-DEFUN(cfg_nsip_sgsn_ip,
-      cfg_nsip_sgsn_ip_cmd,
-      "nsip sgsn remote ip A.B.C.D",
-      "Set the IP of the SGSN to which the proxy shall connect")
-{
-	struct in_addr ia;
-
-	inet_aton(argv[0], &ia);
-	g_cfg->nsip_sgsn_ip = ntohl(ia.s_addr);
-
-	return CMD_SUCCESS;
-}
-
-DEFUN(cfg_nsip_sgsn_port,
-      cfg_nsip_sgsn_port_cmd,
-      "nsip sgsn remote port <0-65534>",
-      "Set the UDP port of the SGSN to which the proxy shall connect")
-{
-	unsigned int port = atoi(argv[0]);
-
-	g_cfg->nsip_sgsn_port = port;
-	return CMD_SUCCESS;
-}
-
 DEFUN(cfg_nsip_sgsn_nsei,
       cfg_nsip_sgsn_nsei_cmd,
       "nsip sgsn nsei <0-65534>",
@@ -140,17 +108,6 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_nsip_sgsn_nsvci,
-      cfg_nsip_sgsn_nsvci_cmd,
-      "nsip sgsn nsvci <0-65534>",
-      "Set the NSVCI to be used in the connection with the SGSN")
-{
-	unsigned int port = atoi(argv[0]);
-
-	g_cfg->nsip_sgsn_nsvci = port;
-	return CMD_SUCCESS;
-}
-
 int gbproxy_vty_init(void)
 {
 	install_element_ve(&show_gbproxy_cmd);
@@ -162,10 +119,7 @@
 	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_ip_cmd);
-	install_element(GBPROXY_NODE, &cfg_nsip_sgsn_port_cmd);
 	install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsei_cmd);
-	install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsvci_cmd);
 
 	return 0;
 }
diff --git a/openbsc/src/gprs/osmo_gbproxy.cfg b/openbsc/src/gprs/osmo_gbproxy.cfg
index d51b04a..29dbe93 100644
--- a/openbsc/src/gprs/osmo_gbproxy.cfg
+++ b/openbsc/src/gprs/osmo_gbproxy.cfg
@@ -6,8 +6,10 @@
  no login
 !
 gbproxy
-  nsip bss local port 23000
-  nsip sgsn remote ip 127.0.0.1
-  nsip sgsn remote port 7777
-  nsip sgsn nsei 101
-  nsip sgsn nsvci 101
+ nsip bss local port 23000
+ nsip 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
