From 73952e3ab4629076c67fd64351d3d0649d75a426 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 16 Jun 2012 14:59:56 +0800 Subject: [PATCH] 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 --- openbsc/include/osmocom/gprs/Makefile.am | 3 +++ .../include/{openbsc => osmocom/gprs}/gprs_bssgp.h | 2 ++ openbsc/include/{openbsc => osmocom/gprs}/gprs_ns.h | 0 .../{openbsc => osmocom/gprs}/gprs_ns_frgre.h | 0 openbsc/src/libgb/gprs_bssgp.c | 8 ++++---- openbsc/src/libgb/gprs_bssgp_bss.c | 4 ++-- openbsc/src/libgb/gprs_bssgp_util.c | 4 ++-- openbsc/src/libgb/gprs_bssgp_vty.c | 13 +++++++------ openbsc/src/libgb/gprs_ns.c | 21 +++++++++++++-------- openbsc/src/libgb/gprs_ns_frgre.c | 14 ++++++++++---- openbsc/src/libgb/gprs_ns_vty.c | 13 +++++++------ 11 files changed, 50 insertions(+), 32 deletions(-) create mode 100644 openbsc/include/osmocom/gprs/Makefile.am rename openbsc/include/{openbsc => osmocom/gprs}/gprs_bssgp.h (99%) rename openbsc/include/{openbsc => osmocom/gprs}/gprs_ns.h (100%) rename openbsc/include/{openbsc => osmocom/gprs}/gprs_ns_frgre.h (100%) diff --git a/openbsc/include/osmocom/gprs/Makefile.am b/openbsc/include/osmocom/gprs/Makefile.am new file mode 100644 index 00000000..fe5714ea --- /dev/null +++ b/openbsc/include/osmocom/gprs/Makefile.am @@ -0,0 +1,3 @@ +libgb_HEADERS = gprs_bssgp.h gprs_ns.h gprs_ns_frgre.h + +libgbdir = $(includedir)/osmocom/gprs diff --git a/openbsc/include/openbsc/gprs_bssgp.h b/openbsc/include/osmocom/gprs/gprs_bssgp.h similarity index 99% rename from openbsc/include/openbsc/gprs_bssgp.h rename to openbsc/include/osmocom/gprs/gprs_bssgp.h index df93f5b2..bfc7d331 100644 --- a/openbsc/include/openbsc/gprs_bssgp.h +++ b/openbsc/include/osmocom/gprs/gprs_bssgp.h @@ -143,6 +143,8 @@ enum gprs_bssgp_cause { /* Our implementation */ +#include + /* gprs_bssgp_util.c */ extern struct gprs_ns_inst *bssgp_nsi; struct msgb *bssgp_msgb_alloc(void); diff --git a/openbsc/include/openbsc/gprs_ns.h b/openbsc/include/osmocom/gprs/gprs_ns.h similarity index 100% rename from openbsc/include/openbsc/gprs_ns.h rename to openbsc/include/osmocom/gprs/gprs_ns.h diff --git a/openbsc/include/openbsc/gprs_ns_frgre.h b/openbsc/include/osmocom/gprs/gprs_ns_frgre.h similarity index 100% rename from openbsc/include/openbsc/gprs_ns_frgre.h rename to openbsc/include/osmocom/gprs/gprs_ns_frgre.h diff --git a/openbsc/src/libgb/gprs_bssgp.c b/openbsc/src/libgb/gprs_bssgp.c index 6722cafb..e93b3de9 100644 --- a/openbsc/src/libgb/gprs_bssgp.c +++ b/openbsc/src/libgb/gprs_bssgp.c @@ -35,10 +35,10 @@ #include #include #include -#include -#include -#include -#include + +#include +#include + #include void *bssgp_tall_ctx = NULL; diff --git a/openbsc/src/libgb/gprs_bssgp_bss.c b/openbsc/src/libgb/gprs_bssgp_bss.c index 9d76c3aa..a53423ca 100644 --- a/openbsc/src/libgb/gprs_bssgp_bss.c +++ b/openbsc/src/libgb/gprs_bssgp_bss.c @@ -28,11 +28,11 @@ #include #include #include +#include +#include #include #include -#include -#include uint8_t *bssgp_msgb_tlli_put(struct msgb *msg, uint32_t tlli) { diff --git a/openbsc/src/libgb/gprs_bssgp_util.c b/openbsc/src/libgb/gprs_bssgp_util.c index a1eb37e1..c794a590 100644 --- a/openbsc/src/libgb/gprs_bssgp_util.c +++ b/openbsc/src/libgb/gprs_bssgp_util.c @@ -27,11 +27,11 @@ #include #include #include +#include +#include #include #include -#include -#include struct gprs_ns_inst *bssgp_nsi; diff --git a/openbsc/src/libgb/gprs_bssgp_vty.c b/openbsc/src/libgb/gprs_bssgp_vty.c index a0d74ac9..256e8af7 100644 --- a/openbsc/src/libgb/gprs_bssgp_vty.c +++ b/openbsc/src/libgb/gprs_bssgp_vty.c @@ -26,17 +26,13 @@ #include -#include #include #include #include #include #include -#include -#include -#include -#include -#include +#include +#include #include #include @@ -44,6 +40,11 @@ #include #include +#include +#include +#include + + /* FIXME: this should go to some common file as it is copied * in vty_interface.c of the BSC */ static const struct value_string gprs_bssgp_timer_strs[] = { diff --git a/openbsc/src/libgb/gprs_ns.c b/openbsc/src/libgb/gprs_ns.c index 39ccd285..c1efa431 100644 --- a/openbsc/src/libgb/gprs_ns.c +++ b/openbsc/src/libgb/gprs_ns.c @@ -68,18 +68,18 @@ #include -#include #include #include #include #include #include +#include +#include +#include +#include + #include #include -#include -#include -#include -#include static const struct tlv_definition ns_att_tlvdef = { .def = { @@ -1026,14 +1026,19 @@ static int nsip_fd_cb(struct osmo_fd *bfd, unsigned int what) */ int gprs_ns_nsip_listen(struct gprs_ns_inst *nsi) { + struct in_addr in; int ret; - ret = make_sock(&nsi->nsip.fd, IPPROTO_UDP, nsi->nsip.local_ip, - nsi->nsip.local_port, 0, nsip_fd_cb, NULL); + in.s_addr = htonl(nsi->nsip.local_ip); + + nsi->nsip.fd.cb = nsip_fd_cb; + nsi->nsip.fd.data = nsi; + ret = osmo_sock_init_ofd(&nsi->nsip.fd, AF_INET, SOCK_DGRAM, + IPPROTO_UDP, inet_ntoa(in), + nsi->nsip.local_port, OSMO_SOCK_F_BIND); if (ret < 0) return ret; - nsi->nsip.fd.data = nsi; return ret; } diff --git a/openbsc/src/libgb/gprs_ns_frgre.c b/openbsc/src/libgb/gprs_ns_frgre.c index 27c5c57b..9be9f2a8 100644 --- a/openbsc/src/libgb/gprs_ns_frgre.c +++ b/openbsc/src/libgb/gprs_ns_frgre.c @@ -34,10 +34,10 @@ #include #include #include +#include +#include -#include #include -#include #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)); diff --git a/openbsc/src/libgb/gprs_ns_vty.c b/openbsc/src/libgb/gprs_ns_vty.c index 1e485ac9..f1ab2873 100644 --- a/openbsc/src/libgb/gprs_ns_vty.c +++ b/openbsc/src/libgb/gprs_ns_vty.c @@ -26,17 +26,13 @@ #include -#include #include #include #include #include #include -#include -#include -#include -#include -#include +#include +#include #include #include @@ -44,6 +40,11 @@ #include #include +#include +#include +#include +#include + static struct gprs_ns_inst *vty_nsi = NULL; /* FIXME: this should go to some common file as it is copied -- 2.11.4.GIT