nat: Use the make_sock routine to listen for incoming connections.
diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c
index 5403764..1baf3c9 100644
--- a/openbsc/src/nat/bsc_nat.c
+++ b/openbsc/src/nat/bsc_nat.c
@@ -42,6 +42,7 @@
 #include <openbsc/bsc_nat_sccp.h>
 #include <openbsc/ipaccess.h>
 #include <openbsc/abis_nm.h>
+#include <openbsc/socket.h>
 #include <openbsc/vty.h>
 
 #include <osmocore/gsm0808.h>
@@ -1064,43 +1065,6 @@
 	return 0;
 }
 
-static int listen_for_bsc(struct bsc_fd *bfd, struct in_addr *in_addr, int port)
-{
-	struct sockaddr_in addr;
-	int ret, on = 1;
-
-	bfd->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-	bfd->cb = ipaccess_listen_bsc_cb;
-	bfd->when = BSC_FD_READ;
-
-	memset(&addr, 0, sizeof(addr));
-	addr.sin_family = AF_INET;
-	addr.sin_port = htons(port);
-	addr.sin_addr.s_addr = in_addr->s_addr;
-
-	setsockopt(bfd->fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
-
-	ret = bind(bfd->fd, (struct sockaddr *) &addr, sizeof(addr));
-	if (ret < 0) {
-		fprintf(stderr, "Could not bind the BSC socket: %s\n",
-			strerror(errno));
-		return -EIO;
-	}
-
-	ret = listen(bfd->fd, 1);
-	if (ret < 0) {
-		perror("listen");
-		return ret;
-	}
-
-	ret = bsc_register_fd(bfd);
-	if (ret < 0) {
-		perror("register_listen_fd");
-		return ret;
-	}
-	return 0;
-}
-
 static void print_usage()
 {
 	printf("Usage: bsc_nat\n");
@@ -1293,7 +1257,9 @@
 	bsc_msc_connect(nat->msc_con);
 
 	/* wait for the BSC */
-	if (listen_for_bsc(&bsc_listen, &local_addr, 5000) < 0) {
+	rc = make_sock(&bsc_listen, IPPROTO_TCP, local_addr.s_addr,
+		       5000, ipaccess_listen_bsc_cb);
+	if (rc != 0) {
 		fprintf(stderr, "Failed to listen for BSC.\n");
 		exit(1);
 	}