nat: In the case of losing the MSC, reset all endpoints
When losing the SCCP connection make sure that we free all endpoints. The disconnection of the BSC should already make sure they are closed but this makes sure everything is properly reset.
This commit is contained in:
parent
81a8975662
commit
790db1e01b
|
@ -179,5 +179,6 @@ struct sccp_connections *patch_sccp_src_ref_to_msc(struct msgb *, struct bsc_nat
|
|||
int bsc_write_mgcp(struct bsc_connection *bsc, const u_int8_t *data, unsigned int length);
|
||||
int bsc_mgcp_assign(struct sccp_connections *, struct msgb *msg);
|
||||
void bsc_mgcp_clear(struct sccp_connections *);
|
||||
void bsc_mgcp_free_endpoints(struct bsc_nat *nat);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/bssap.h>
|
||||
#include <openbsc/debug.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
#include <openbsc/mgcp_internal.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
|
@ -64,3 +66,11 @@ void bsc_mgcp_clear(struct sccp_connections *con)
|
|||
con->msc_timeslot = -1;
|
||||
con->bsc_timeslot = -1;
|
||||
}
|
||||
|
||||
void bsc_mgcp_free_endpoints(struct bsc_nat *nat)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1; i < nat->mgcp_cfg->number_endpoints; ++i)
|
||||
mgcp_free_endp(&nat->mgcp_cfg->endpoints[i]);
|
||||
}
|
||||
|
|
|
@ -304,6 +304,7 @@ static void msc_connection_was_lost(struct bsc_msc_connection *con)
|
|||
llist_for_each_entry_safe(bsc, tmp, &nat->bsc_connections, list_entry)
|
||||
remove_bsc_connection(bsc);
|
||||
|
||||
bsc_mgcp_free_endpoints(nat);
|
||||
bsc_msc_schedule_connect(con);
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@ bsc_nat_test_SOURCES = bsc_nat_test.c \
|
|||
$(top_srcdir)/src/nat/bsc_sccp.c \
|
||||
$(top_srcdir)/src/nat/bsc_nat_utils.c \
|
||||
$(top_srcdir)/src/nat/bsc_mgcp_utils.c \
|
||||
$(top_srcdir)/src/mgcp/mgcp_protocol.c \
|
||||
$(top_srcdir)/src/mgcp/mgcp_network.c \
|
||||
$(top_srcdir)/src/bssap.c
|
||||
bsc_nat_test_LDADD = $(top_builddir)/src/libbsc.a $(top_builddir)/src/libsccp.a $(LIBOSMOCORE_LIBS)
|
||||
|
||||
|
|
Loading…
Reference in New Issue