From 978f58cd2e41212d5e1f1543e9f05137831304e1 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Tue, 13 Feb 2018 17:37:39 +0100 Subject: libcommon: eliminate socket.c Replace calls to make_sock() with osmo_sock_init_ofd(). Shame on me for not testing every single one in practice, I hope for peer review to confirm that this should be correct... Read closely please! The IPPROTO_GRE define seems to be unused (at least in osmo-bsc.git), drop it completely. Change-Id: Ia6e4e0e1eed3328fa25b3b90be376d532ad0e56b --- src/ipaccess/ipaccess-proxy.c | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) (limited to 'src/ipaccess') diff --git a/src/ipaccess/ipaccess-proxy.c b/src/ipaccess/ipaccess-proxy.c index 40749ee7a..5cf6d6d93 100644 --- a/src/ipaccess/ipaccess-proxy.c +++ b/src/ipaccess/ipaccess-proxy.c @@ -47,7 +47,7 @@ #include #include #include -#include +#include #include /* one instance of an ip.access protocol proxy */ @@ -369,8 +369,11 @@ static int ipbc_alloc_connect(struct ipa_proxy_conn *ipc, struct osmo_fd *bfd, /* Create UDP socket for BTS packet injection */ udp_port = 10000 + (site_id % 1000)*100 + (bts_id % 100); - ret = make_sock(&ipbc->udp_bts_fd, IPPROTO_UDP, INADDR_ANY, udp_port, - UDP_TO_BTS, udp_fd_cb, ipbc); + ipbc->udp_bts_fd.priv_nr = UDP_TO_BTS; + ipbc->udp_bts_fd.cb = udp_fd_cb; + ipbc->udp_bts_fd.data = ipbc; + ret = osmo_sock_init_ofd(&ipbc->udp_bts_fd, AF_INET, SOCK_DGRAM, IPPROTO_UDP, + NULL, udp_port, OSMO_SOCK_F_BIND); if (ret < 0) goto err_udp_bts; DEBUGP(DLINP, "(%u/%u/%u) Created UDP socket for injection " @@ -378,8 +381,11 @@ static int ipbc_alloc_connect(struct ipa_proxy_conn *ipc, struct osmo_fd *bfd, /* Create UDP socket for BSC packet injection */ udp_port = 20000 + (site_id % 1000)*100 + (bts_id % 100); - ret = make_sock(&ipbc->udp_bsc_fd, IPPROTO_UDP, INADDR_ANY, udp_port, - UDP_TO_BSC, udp_fd_cb, ipbc); + ipbc->udp_bsc_fd.priv_nr = UDP_TO_BSC; + ipbc->udp_bsc_fd.cb = udp_fd_cb; + ipbc->udp_bsc_fd.data = ipbc; + ret = osmo_sock_init_ofd(&ipbc->udp_bsc_fd, AF_INET, SOCK_DGRAM, IPPROTO_UDP, + NULL, udp_port, OSMO_SOCK_F_BIND); if (ret < 0) goto err_udp_bsc; DEBUGP(DLINP, "(%u/%u/%u) Created UDP socket for injection " @@ -390,13 +396,12 @@ static int ipbc_alloc_connect(struct ipa_proxy_conn *ipc, struct osmo_fd *bfd, if (gprs_ns_ipaddr) { struct sockaddr_in sock; socklen_t len = sizeof(sock); - struct in_addr addr; - uint32_t ip; - inet_aton(listen_ipaddr, &addr); - ip = ntohl(addr.s_addr); /* make_sock() needs host byte order */ - ret = make_sock(&ipbc->gprs_ns_fd, IPPROTO_UDP, ip, 0, 0, - gprs_ns_cb, ipbc); + ipbc->gprs_ns_fd.priv_nr = 0; + ipbc->gprs_ns_fd.cb = gprs_ns_cb; + ipbc->gprs_ns_fd.data = ipbc; + ret = osmo_sock_init_ofd(&ipbc->gprs_ns_fd, AF_INET, SOCK_DGRAM, IPPROTO_UDP, + listen_ipaddr, 0, OSMO_SOCK_F_BIND); if (ret < 0) { LOGP(DLINP, LOGL_ERROR, "Creating the GPRS socket failed.\n"); goto err_udp_bsc; @@ -1062,15 +1067,18 @@ static int ipaccess_proxy_setup(void) osmo_timer_setup(&ipp->reconn_timer, reconn_tmr_cb, ipp); /* Listen for OML connections */ - ret = make_sock(&ipp->oml_listen_fd, IPPROTO_TCP, INADDR_ANY, - IPA_TCP_PORT_OML, OML_FROM_BTS, listen_fd_cb, NULL); + ipp->oml_listen_fd.priv_nr = OML_FROM_BTS; + ipp->oml_listen_fd.cb = listen_fd_cb; + ret = osmo_sock_init_ofd(&ipp->oml_listen_fd, AF_INET, SOCK_STREAM, IPPROTO_TCP, + NULL, IPA_TCP_PORT_OML, OSMO_SOCK_F_BIND); if (ret < 0) return ret; /* Listen for RSL connections */ - ret = make_sock(&ipp->rsl_listen_fd, IPPROTO_TCP, INADDR_ANY, - IPA_TCP_PORT_RSL, RSL_FROM_BTS, listen_fd_cb, NULL); - + ipp->rsl_listen_fd.priv_nr = RSL_FROM_BTS; + ipp->rsl_listen_fd.cb = listen_fd_cb; + ret = osmo_sock_init_ofd(&ipp->rsl_listen_fd, AF_INET, SOCK_STREAM, IPPROTO_TCP, + NULL, IPA_TCP_PORT_RSL, OSMO_SOCK_F_BIND); if (ret < 0) return ret; -- cgit v1.2.3