From 456f68b16041f9cb30281e428744a12a372a5b73 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 26 Nov 2016 14:39:47 +0100 Subject: mgcp_network.c: Use libosmocore socket functions Use libosmocore osmo_sock_init_ofd() in mgcp_create_bind(), rather than using a hand-coded version using OS socket functions. The locally implemented verison of the code didn't check setsockopt() return value. Change-Id: I1de4de12245847a6d30d1bf7c91dc813d2178dee Fixes: Coverity CID 57646 --- openbsc/src/libmgcp/mgcp_network.c | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index abce6e49d..a98a60fd4 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -28,10 +28,10 @@ #include #include -#include #include #include +#include #include #include @@ -884,28 +884,9 @@ static int rtp_data_trans_bts(struct osmo_fd *fd, unsigned int what) int mgcp_create_bind(const char *source_addr, struct osmo_fd *fd, int port) { - struct sockaddr_in addr; - int on = 1; - - fd->fd = socket(AF_INET, SOCK_DGRAM, 0); - if (fd->fd < 0) { - LOGP(DMGCP, LOGL_ERROR, "Failed to create UDP port.\n"); - return -1; - } - - setsockopt(fd->fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - inet_aton(source_addr, &addr.sin_addr); - - if (bind(fd->fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { - close(fd->fd); - fd->fd = -1; - return -1; - } - - return 0; + return osmo_sock_init_ofd(fd, AF_INET, SOCK_DGRAM, IPPROTO_UDP, + source_addr, port, + OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK); } int mgcp_set_ip_tos(int fd, int tos) -- cgit v1.2.3