From f961de1108407623aa2201df4710fecd9a3bf795 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 12 Oct 2010 23:28:28 +0200 Subject: nat: Use the make_sock routine to listen for incoming connections. --- openbsc/src/nat/bsc_nat.c | 42 ++++-------------------------------------- 1 file changed, 4 insertions(+), 38 deletions(-) (limited to 'openbsc/src/nat/bsc_nat.c') diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c index 5403764f4..1baf3c928 100644 --- a/openbsc/src/nat/bsc_nat.c +++ b/openbsc/src/nat/bsc_nat.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -1064,43 +1065,6 @@ static int ipaccess_listen_bsc_cb(struct bsc_fd *bfd, unsigned int what) 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 @@ int main(int argc, char **argv) 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); } -- cgit v1.2.3