summaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-05-11 14:28:25 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-11-24 16:58:30 +0100
commit402006dfdf84c3bf3b22a48ba6ef6922ff6991c7 (patch)
treea92ad1113e1d1e2220bdd5fbdf30a6414e7b9bb4 /openbsc
parentc69ee8527c8ec88bdbff820d0a8aa706502516a5 (diff)
define mncc_recv_cb_t to avoid code dup
Put mncc_recv_cb_t in common_cs.h to avoid header include complications: if placing right above struct gsm_network, one must include gsm_data.h to use mncc_recv_cb_t as function parameter in a header, which will include gsm_data_shared.h, which will include common_cs.h (future knowledge). Since I will need to use mncc_recv_cb_t in common_cs.h, including gsm_data.h from there would introduce an #include loop. Avoid that and define mncc_recv_cb_t in common_cs.h to begin with. Change-Id: I2e64cffa563750ce9f3172ffba6f9cf5b9280e9c
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/include/openbsc/bss.h5
-rw-r--r--openbsc/include/openbsc/common_cs.h5
-rw-r--r--openbsc/include/openbsc/gsm_data.h5
-rw-r--r--openbsc/src/libbsc/bsc_init.c3
-rw-r--r--openbsc/src/libbsc/net_init.c2
5 files changed, 13 insertions, 7 deletions
diff --git a/openbsc/include/openbsc/bss.h b/openbsc/include/openbsc/bss.h
index 49df547a1..d73776f03 100644
--- a/openbsc/include/openbsc/bss.h
+++ b/openbsc/include/openbsc/bss.h
@@ -1,11 +1,12 @@
#ifndef _BSS_H_
#define _BSS_H_
-struct gsm_network;
+#include <openbsc/gsm_data.h>
+
struct msgb;
/* start and stop network */
-extern int bsc_bootstrap_network(int (*mncc_recv)(struct gsm_network *, struct msgb *), const char *cfg_file);
+extern int bsc_bootstrap_network(mncc_recv_cb_t mncc_recv, const char *cfg_file);
extern int bsc_shutdown_net(struct gsm_network *net);
/* register all supported BTS */
diff --git a/openbsc/include/openbsc/common_cs.h b/openbsc/include/openbsc/common_cs.h
index 6f70f09be..612d754c9 100644
--- a/openbsc/include/openbsc/common_cs.h
+++ b/openbsc/include/openbsc/common_cs.h
@@ -1 +1,6 @@
#pragma once
+
+struct msgb;
+struct gsm_network;
+
+typedef int (*mncc_recv_cb_t)(struct gsm_network *, struct msgb *);
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 70c08c326..fe3fa29e5 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -14,6 +14,7 @@
#include <osmocom/crypt/auth.h>
#include <openbsc/rest_octets.h>
+#include <openbsc/common_cs.h>
/** annotations for msgb ownership */
#define __uses
@@ -308,7 +309,7 @@ struct gsm_network {
/* layer 4 */
struct mncc_sock_state *mncc_state;
- int (*mncc_recv) (struct gsm_network *net, struct msgb *msg);
+ mncc_recv_cb_t mncc_recv;
struct llist_head upqueue;
struct llist_head trans_list;
struct bsc_api *bsc_api;
@@ -417,7 +418,7 @@ extern void talloc_ctx_init(void *ctx_root);
struct gsm_network *gsm_network_init(void *ctx,
uint16_t country_code,
uint16_t network_code,
- int (*mncc_recv)(struct gsm_network *, struct msgb *));
+ mncc_recv_cb_t mncc_recv);
int gsm_set_bts_type(struct gsm_bts *bts, enum gsm_bts_type type);
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index bf6e056a2..a1becf849 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -475,8 +475,7 @@ static int bootstrap_bts(struct gsm_bts *bts)
return 0;
}
-int bsc_bootstrap_network(int (*mncc_recv)(struct gsm_network *, struct msgb *),
- const char *config_file)
+int bsc_bootstrap_network(mncc_recv_cb_t mncc_recv, const char *config_file)
{
struct gsm_bts *bts;
int rc;
diff --git a/openbsc/src/libbsc/net_init.c b/openbsc/src/libbsc/net_init.c
index 57e359909..da13a52f6 100644
--- a/openbsc/src/libbsc/net_init.c
+++ b/openbsc/src/libbsc/net_init.c
@@ -26,7 +26,7 @@
struct gsm_network *gsm_network_init(void *ctx,
uint16_t country_code,
uint16_t network_code,
- int (*mncc_recv)(struct gsm_network *, struct msgb *))
+ mncc_recv_cb_t mncc_recv)
{
struct gsm_network *net;
const char *default_regexp = ".*";