aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/mtp_data.h1
-rw-r--r--src/mtp_layer3.c2
-rw-r--r--src/ss7_application.c13
3 files changed, 15 insertions, 1 deletions
diff --git a/include/mtp_data.h b/include/mtp_data.h
index 4af3777..a8f9463 100644
--- a/include/mtp_data.h
+++ b/include/mtp_data.h
@@ -144,6 +144,7 @@ struct mtp_link {
void mtp_link_set_stop(struct mtp_link_set *set);
void mtp_link_set_reset(struct mtp_link_set *set);
int mtp_link_set_data(struct mtp_link *link, struct msgb *msg);
+int mtp_link_handle_data(struct mtp_link *link, struct msgb *msg);
int mtp_link_set_submit_sccp_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
int mtp_link_set_submit_isup_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
diff --git a/src/mtp_layer3.c b/src/mtp_layer3.c
index 95e5dfc..dc24a73 100644
--- a/src/mtp_layer3.c
+++ b/src/mtp_layer3.c
@@ -465,7 +465,7 @@ static int mtp_link_sccp_data(struct mtp_link_set *set, struct mtp_level_3_hdr *
return 0;
}
-int mtp_link_set_data(struct mtp_link *link, struct msgb *msg)
+int mtp_link_handle_data(struct mtp_link *link, struct msgb *msg)
{
int rc = -1;
struct mtp_level_3_hdr *hdr;
diff --git a/src/ss7_application.c b/src/ss7_application.c
index 0609603..831ae1e 100644
--- a/src/ss7_application.c
+++ b/src/ss7_application.c
@@ -398,3 +398,16 @@ void mtp_link_submit(struct mtp_link *link, struct msgb *msg)
rate_ctr_inc(&link->set->ctrg->ctr[MTP_LSET_TOTA_OUT_MSG]);
link->write(link, msg);
}
+
+int mtp_link_set_data(struct mtp_link *link, struct msgb *msg)
+{
+ if (link->set->app && link->set->app->type == APP_STP) {
+ if (!link->set->app->route_src.up || !link->set->app->route_dst.up) {
+ LOGP(DINP, LOGL_NOTICE, "Not handling data as application is down %d/%s.\n",
+ link->set->app->nr, link->set->app->name);
+ return -1;
+ }
+ }
+
+ return mtp_link_handle_data(link, msg);
+}