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
This commit is contained in:
Daniel Willmann 2011-07-22 17:55:42 +02:00 committed by Harald Welte
parent 0e0cf37c44
commit 782974b6c9
3 changed files with 20 additions and 16 deletions

View File

@ -150,6 +150,5 @@ struct ctrl_cmd_element cmd_##cmdname = { \
}
struct gsm_network;
int controlif_setup(struct gsm_network *gsmnet, uint16_t port);
#endif /* _CONTROL_CMD_H */

View File

@ -5,9 +5,17 @@
#include <openbsc/control_cmd.h>
#include <openbsc/gsm_data.h>
struct ctrl_handle {
struct osmo_fd listen_fd;
struct gsm_network *gsmnet;
/* List of control connections */
struct llist_head ccon_list;
};
int ctrl_cmd_send(struct osmo_wqueue *queue, struct ctrl_cmd *cmd);
int ctrl_cmd_handle(struct ctrl_cmd *cmd, void *data);
int controlif_setup(struct gsm_network *gsmnet, uint16_t port);
struct ctrl_handle *controlif_setup(struct gsm_network *gsmnet, uint16_t port);
#endif /* _CONTROL_IF_H */

View File

@ -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;
}