diff options
-rw-r--r-- | openbsc/include/openbsc/gsm_04_80.h | 1 | ||||
-rw-r--r-- | openbsc/src/gsm_04_80.c | 16 | ||||
-rw-r--r-- | openbsc/src/vty_interface_layer3.c | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_04_80.h b/openbsc/include/openbsc/gsm_04_80.h index 8215ca736..0d61dbd07 100644 --- a/openbsc/include/openbsc/gsm_04_80.h +++ b/openbsc/include/openbsc/gsm_04_80.h @@ -30,5 +30,6 @@ int gsm0480_wrap_invoke(struct msgb *msg, int op, int link_id); int gsm0480_wrap_facility(struct msgb *msg); int gsm0480_send_ussdNotify(struct gsm_subscriber_connection *conn, const char *text); +int gsm0480_send_releaseComplete(struct gsm_subscriber_connection *conn); #endif diff --git a/openbsc/src/gsm_04_80.c b/openbsc/src/gsm_04_80.c index 28f9b9215..a49c8b565 100644 --- a/openbsc/src/gsm_04_80.c +++ b/openbsc/src/gsm_04_80.c @@ -469,3 +469,19 @@ int gsm0480_send_ussdNotify(struct gsm_subscriber_connection *conn, const char * return gsm0808_submit_dtap(conn, msg, 0); } + +int gsm0480_send_releaseComplete(struct gsm_subscriber_connection *conn) +{ + struct gsm48_hdr *gh; + struct msgb *msg; + + msg = gsm48_msgb_alloc(); + if (!msg) + return -1; + + gh = (struct gsm48_hdr *) msgb_push(msg, sizeof(*gh)); + gh->proto_discr = GSM48_PDISC_NC_SS; + gh->msg_type = GSM0480_MTYPE_RELEASE_COMPLETE; + + return gsm0808_submit_dtap(conn, msg, 0); +} diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c index 34e61bb5b..b775af139 100644 --- a/openbsc/src/vty_interface_layer3.c +++ b/openbsc/src/vty_interface_layer3.c @@ -408,6 +408,7 @@ DEFUN(subscriber_ussd_notify, } gsm0480_send_ussdNotify(conn, text); + gsm0480_send_releaseComplete(conn); subscr_put(subscr); talloc_free(text); |