aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-09-21 15:47:10 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-09-21 15:47:10 +0200
commit78f5060c622c9af9f9a3724c4032d045e1c45ff9 (patch)
tree08330db407748da36290e85089c7c2ec8bdd6104
parentd5be846c920a9f008ba439dad9bc610f7fbd6d89 (diff)
ss7: Inform the application layer that a connection is down
This can be used to force one connection down while the other is down. E.g. to force SCTP down when the IPA connection is down as well.
-rw-r--r--include/ss7_application.h3
-rw-r--r--src/msc_conn.c3
-rw-r--r--src/ss7_application.c10
3 files changed, 16 insertions, 0 deletions
diff --git a/include/ss7_application.h b/include/ss7_application.h
index b762cac..adf18f1 100644
--- a/include/ss7_application.h
+++ b/include/ss7_application.h
@@ -107,4 +107,7 @@ int ss7_application_mgcp_domain_name(struct ss7_application *,
int ss7_application_trunk_name(struct ss7_application *,
const char *trunk_name);
+int ss7_application_msc_down(struct ss7_application *app);
+int ss7_application_msc_up(struct ss7_application *app);
+
#endif
diff --git a/src/msc_conn.c b/src/msc_conn.c
index ff73a49..82ca811 100644
--- a/src/msc_conn.c
+++ b/src/msc_conn.c
@@ -69,6 +69,7 @@ void msc_close_connection(struct msc_connection *fw)
osmo_timer_del(&fw->pong_timeout);
osmo_timer_del(&fw->msc_timeout);
osmo_wqueue_clear(&fw->msc_connection);
+ ss7_application_msc_down(fw->app);
msc_schedule_reconnect(fw);
}
@@ -155,6 +156,7 @@ static int ipaccess_a_fd_cb(struct osmo_fd *bfd)
osmo_timer_del(&fw->msc_timeout);
fw->first_contact = 0;
fw->msc_link_down = 0;
+ ss7_application_msc_up(fw->app);
msc_send_reset(fw);
}
if (msg->l2h[0] == IPAC_MSGT_ID_GET && fw->token) {
@@ -615,6 +617,7 @@ static void msc_handle_id_response(struct msc_connection *msc, struct msgb *msg)
LOGP(DMSC, LOGL_NOTICE, "Authenticated the connection.\n");
msc->auth = 1;
+ ss7_application_msc_up(msc->app);
return;
clean:
msc_close_connection(msc);
diff --git a/src/ss7_application.c b/src/ss7_application.c
index b8e586b..a537b6e 100644
--- a/src/ss7_application.c
+++ b/src/ss7_application.c
@@ -432,3 +432,13 @@ int ss7_application_trunk_name(struct ss7_application *app, const char *name)
return app->trunk_name == NULL;
}
+
+int ss7_application_msc_up(struct ss7_application *app)
+{
+ return 0;
+}
+
+int ss7_application_msc_down(struct ss7_application *app)
+{
+ return 0;
+}