osmo-bts-virtual: Shut down gracefully on socket creation failure

Don't simply crash if creation of the multicast socket fails

Change-Id: Ie87b6684b3aa7f21742e4cf21533e980485c1230
This commit is contained in:
Harald Welte 2018-02-22 10:14:16 +01:00
parent a4bca11555
commit 04719d19b9
2 changed files with 7 additions and 2 deletions

View File

@ -193,12 +193,12 @@ int bts_model_phy_link_open(struct phy_link *plink)
plink->u.virt.virt_um = virt_um_init(plink, plink->u.virt.ms_mcast_group, plink->u.virt.ms_mcast_port,
plink->u.virt.bts_mcast_group, plink->u.virt.bts_mcast_port,
virt_um_rcv_cb);
/* set back reference to plink */
plink->u.virt.virt_um->priv = plink;
if (!plink->u.virt.virt_um) {
phy_link_state_set(plink, PHY_LINK_SHUTDOWN);
return -1;
}
/* set back reference to plink */
plink->u.virt.virt_um->priv = plink;
/* iterate over list of PHY instances and initialize the scheduler */
llist_for_each_entry(pinst, &plink->instances, list) {

View File

@ -66,6 +66,11 @@ struct virt_um_inst *virt_um_init(void *ctx, char *tx_mcast_group, uint16_t tx_m
struct virt_um_inst *vui = talloc_zero(ctx, struct virt_um_inst);
vui->mcast_sock = mcast_bidir_sock_setup(ctx, tx_mcast_group, tx_mcast_port,
rx_mcast_group, rx_mcast_port, 1, virt_um_fd_cb, vui);
if (!vui->mcast_sock) {
perror("Unable to create VirtualUm multicast socket");
talloc_free(vui);
return NULL;
}
vui->recv_cb = recv_cb;
return vui;