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
diff --git a/openbsc/src/libgb/gprs_bssgp.c b/openbsc/src/libgb/gprs_bssgp.c
index 6722caf..e93b3de 100644
--- a/openbsc/src/libgb/gprs_bssgp.c
+++ b/openbsc/src/libgb/gprs_bssgp.c
@@ -35,10 +35,10 @@
 #include <openbsc/debug.h>
 #include <openbsc/gsm_data.h>
 #include <openbsc/gsm_04_08_gprs.h>
-#include <openbsc/gprs_bssgp.h>
-#include <openbsc/gprs_llc.h>
-#include <openbsc/gprs_ns.h>
-#include <openbsc/gprs_sgsn.h>
+
+#include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gprs/gprs_ns.h>
+
 #include <openbsc/gprs_gmm.h>
 
 void *bssgp_tall_ctx = NULL;
diff --git a/openbsc/src/libgb/gprs_bssgp_bss.c b/openbsc/src/libgb/gprs_bssgp_bss.c
index 9d76c3a..a53423c 100644
--- a/openbsc/src/libgb/gprs_bssgp_bss.c
+++ b/openbsc/src/libgb/gprs_bssgp_bss.c
@@ -28,11 +28,11 @@
 #include <osmocom/core/rate_ctr.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
+#include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gprs/gprs_ns.h>
 
 #include <openbsc/debug.h>
 #include <openbsc/gsm_data.h>
-#include <openbsc/gprs_bssgp.h>
-#include <openbsc/gprs_ns.h>
 
 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 a1eb37e..c794a59 100644
--- a/openbsc/src/libgb/gprs_bssgp_util.c
+++ b/openbsc/src/libgb/gprs_bssgp_util.c
@@ -27,11 +27,11 @@
 #include <osmocom/core/msgb.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
+#include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gprs/gprs_ns.h>
 
 #include <openbsc/debug.h>
 #include <openbsc/gsm_data.h>
-#include <openbsc/gprs_bssgp.h>
-#include <openbsc/gprs_ns.h>
 
 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 a0d74ac..256e8af 100644
--- a/openbsc/src/libgb/gprs_bssgp_vty.c
+++ b/openbsc/src/libgb/gprs_bssgp_vty.c
@@ -26,17 +26,13 @@
 
 #include <arpa/inet.h>
 
-#include <openbsc/gsm_data.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/select.h>
 #include <osmocom/core/rate_ctr.h>
-#include <openbsc/debug.h>
-#include <openbsc/signal.h>
-#include <openbsc/gprs_ns.h>
-#include <openbsc/gprs_bssgp.h>
-#include <openbsc/vty.h>
+#include <osmocom/gprs/gprs_ns.h>
+#include <osmocom/gprs/gprs_bssgp.h>
 
 #include <osmocom/vty/vty.h>
 #include <osmocom/vty/command.h>
@@ -44,6 +40,11 @@
 #include <osmocom/vty/telnet_interface.h>
 #include <osmocom/vty/misc.h>
 
+#include <openbsc/vty.h>
+#include <openbsc/gsm_data.h>
+#include <openbsc/debug.h>
+
+
 /* 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 39ccd28..c1efa43 100644
--- a/openbsc/src/libgb/gprs_ns.c
+++ b/openbsc/src/libgb/gprs_ns.c
@@ -68,18 +68,18 @@
 
 #include <arpa/inet.h>
 
-#include <openbsc/gsm_data.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/select.h>
 #include <osmocom/core/rate_ctr.h>
+#include <osmocom/core/socket.h>
+#include <osmocom/gprs/gprs_ns.h>
+#include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gprs/gprs_ns_frgre.h>
+
 #include <openbsc/debug.h>
 #include <openbsc/signal.h>
-#include <openbsc/gprs_ns.h>
-#include <openbsc/gprs_bssgp.h>
-#include <openbsc/gprs_ns_frgre.h>
-#include <openbsc/socket.h>
 
 static const struct tlv_definition ns_att_tlvdef = {
 	.def = {
@@ -1026,14 +1026,19 @@
  */
 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 27c5c57..9be9f2a 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 @@
 
 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 @@
 	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 1e485ac..f1ab287 100644
--- a/openbsc/src/libgb/gprs_ns_vty.c
+++ b/openbsc/src/libgb/gprs_ns_vty.c
@@ -26,17 +26,13 @@
 
 #include <arpa/inet.h>
 
-#include <openbsc/gsm_data.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/select.h>
 #include <osmocom/core/rate_ctr.h>
-#include <openbsc/debug.h>
-#include <openbsc/signal.h>
-#include <openbsc/gprs_ns.h>
-#include <openbsc/gprs_bssgp.h>
-#include <openbsc/vty.h>
+#include <osmocom/gprs/gprs_ns.h>
+#include <osmocom/gprs/gprs_bssgp.h>
 
 #include <osmocom/vty/vty.h>
 #include <osmocom/vty/command.h>
@@ -44,6 +40,11 @@
 #include <osmocom/vty/telnet_interface.h>
 #include <osmocom/vty/misc.h>
 
+#include <openbsc/gsm_data.h>
+#include <openbsc/debug.h>
+#include <openbsc/signal.h>
+#include <openbsc/vty.h>
+
 static struct gprs_ns_inst *vty_nsi = NULL;
 
 /* FIXME: this should go to some common file as it is copied