aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libctrl
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2011-07-22 17:55:42 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2012-09-11 12:52:23 +0200
commit6fc4a98fc5250d009a65d5fa079904400a3ded3d (patch)
tree0ea250b3d72f6336ed77e84ef1d7a9839142b479 /openbsc/src/libctrl
parentf3b31eb34978d35011ff46edaf40c1a151604197 (diff)
libctrl: Change controlif_setup so it returns the ctrl handle
nat: Catch up with controlif_setup API change We now save a control handle reference in the nat osmo-bsc: Catch up with controlif_setup API change We now save a control handle reference in the gsm network
Diffstat (limited to 'openbsc/src/libctrl')
-rw-r--r--openbsc/src/libctrl/control_if.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/openbsc/src/libctrl/control_if.c b/openbsc/src/libctrl/control_if.c
index 36fdc280b..e871a519c 100644
--- a/openbsc/src/libctrl/control_if.c
+++ b/openbsc/src/libctrl/control_if.c
@@ -39,6 +39,7 @@
#include <sys/types.h>
#include <openbsc/control_cmd.h>
+#include <openbsc/control_if.h>
#include <openbsc/debug.h>
#include <openbsc/gsm_data.h>
#include <openbsc/ipaccess.h>
@@ -62,14 +63,6 @@
#include <osmocom/abis/e1_input.h>
#include <osmocom/abis/ipa.h>
-struct ctrl_handle {
- struct osmo_fd listen_fd;
- struct gsm_network *gsmnet;
-
- /* List of control connections */
- struct llist_head ccon_list;
-};
-
vector ctrl_node_vec;
int ctrl_cmd_send(struct osmo_wqueue *queue, struct ctrl_cmd *cmd)
@@ -607,33 +600,37 @@ static int verify_counter(struct ctrl_cmd *cmd, const char *value, void *data)
return 0;
}
-int controlif_setup(struct gsm_network *gsmnet, uint16_t port)
+struct ctrl_handle *controlif_setup(struct gsm_network *gsmnet, uint16_t port)
{
int ret;
struct ctrl_handle *ctrl;
ctrl = talloc_zero(tall_bsc_ctx, struct ctrl_handle);
if (!ctrl)
- return -ENOMEM;
+ return NULL;
INIT_LLIST_HEAD(&ctrl->ccon_list);
ctrl->gsmnet = gsmnet;
ctrl_node_vec = vector_init(5);
- if (!ctrl_node_vec)
- return -ENOMEM;
+ if (!ctrl_node_vec) {
+ talloc_free(ctrl);
+ return NULL;
+ }
/* Listen for control connections */
ret = make_sock(&ctrl->listen_fd, IPPROTO_TCP, INADDR_LOOPBACK, port,
0, listen_fd_cb, ctrl);
if (ret < 0) {
talloc_free(ctrl);
- return ret;
+ vector_free(ctrl_node_vec);
+ ctrl_node_vec = NULL;
+ return NULL;
}
ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_rate_ctr);
ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_counter);
- return ret;
+ return ctrl;
}