aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/bsc_data.h2
-rw-r--r--src/main_udt.c1
-rw-r--r--src/msc_conn.c9
3 files changed, 12 insertions, 0 deletions
diff --git a/include/bsc_data.h b/include/bsc_data.h
index a83d089..9030910 100644
--- a/include/bsc_data.h
+++ b/include/bsc_data.h
@@ -115,6 +115,8 @@ struct bsc_data {
uint16_t mcc;
uint16_t mnc;
uint16_t lac;
+
+ int forward_only;
};
/* bsc related functions */
diff --git a/src/main_udt.c b/src/main_udt.c
index 0b07da7..3e41d91 100644
--- a/src/main_udt.c
+++ b/src/main_udt.c
@@ -254,6 +254,7 @@ int main(int argc, char **argv)
bsc.ping_time = 20;
bsc.pong_time = 5;
bsc.msc_time = 20;
+ bsc.forward_only = 1;
handle_options(argc, argv);
diff --git a/src/msc_conn.c b/src/msc_conn.c
index f980178..f2a3e1a 100644
--- a/src/msc_conn.c
+++ b/src/msc_conn.c
@@ -201,6 +201,15 @@ static int ipaccess_a_fd_cb(struct bsc_fd *bfd)
} else if (hh->proto == IPAC_PROTO_SCCP) {
struct sccp_parse_result result;
int rc;
+
+ /* we can not forward it right now */
+ if (bsc->forward_only && link->sccp_up) {
+ if (send_or_queue_bsc_msg(link, 13, msg) != 1)
+ msgb_free(msg);
+ return 0;
+ }
+
+
rc = bss_patch_filter_msg(msg, &result);
if (rc == BSS_FILTER_RESET_ACK) {