aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libgb/gprs_ns_frgre.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-06-16 14:59:56 +0800
committerHarald Welte <laforge@gnumonks.org>2012-06-16 15:14:00 +0800
commitea34a4e3a7741c0b03fc421e2850234b82a0977c (patch)
tree6a57247a94bf85ac6b24261fcff831eeb3593920 /openbsc/src/libgb/gprs_ns_frgre.c
parent704cb8680bbdf62cdaa2583fd5072791b7589a90 (diff)
split libgb into a separate library for outside use
This also removes the dependency to osmo_sock() inside libcommon and replaces it with osmo_sock_* from libosmocore
Diffstat (limited to 'openbsc/src/libgb/gprs_ns_frgre.c')
-rw-r--r--openbsc/src/libgb/gprs_ns_frgre.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/openbsc/src/libgb/gprs_ns_frgre.c b/openbsc/src/libgb/gprs_ns_frgre.c
index 27c5c57b7..9be9f2a8f 100644
--- a/openbsc/src/libgb/gprs_ns_frgre.c
+++ b/openbsc/src/libgb/gprs_ns_frgre.c
@@ -34,10 +34,10 @@
#include <osmocom/core/select.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/talloc.h>
+#include <osmocom/core/socket.h>
+#include <osmocom/gprs/gprs_ns.h>
-#include <openbsc/socket.h>
#include <openbsc/debug.h>
-#include <openbsc/gprs_ns.h>
#define GRE_PTYPE_FR 0x6559
#define GRE_PTYPE_IPv4 0x0800
@@ -282,8 +282,11 @@ static int nsfrgre_fd_cb(struct osmo_fd *bfd, unsigned int what)
int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi)
{
+ struct in_addr in;
int rc;
+ in.s_addr = htonl(nsi->frgre.local_ip);
+
/* Make sure we close any existing socket before changing it */
if (nsi->frgre.fd.fd)
close(nsi->frgre.fd.fd);
@@ -291,8 +294,11 @@ int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi)
if (!nsi->frgre.enabled)
return 0;
- rc = make_sock(&nsi->frgre.fd, IPPROTO_GRE, nsi->frgre.local_ip,
- 0, 0, nsfrgre_fd_cb, NULL);
+ nsi->frgre.fd.cb = nsfrgre_fd_cb;
+ nsi->frgre.fd.data = nsi;
+ rc = osmo_sock_init_ofd(&nsi->frgre.fd, AF_INET, SOCK_RAW,
+ IPPROTO_GRE, inet_ntoa(in), 0,
+ OSMO_SOCK_F_BIND);
if (rc < 0) {
LOGP(DNS, LOGL_ERROR, "Error creating GRE socket (%s)\n",
strerror(errno));