aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-10-16 17:33:46 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-10-19 16:40:34 +0200
commit7e8da1379eb73e6a3b50837b049f0d34450cf89c (patch)
tree7fbc3b6ca32e9e24aeb08d78687d59eeea39bbf3
parent3d38742d1ce756dcbebcdb197574f200f57f2a77 (diff)
nat: Add a method to add a proper message to the queue.
This will be used by the USSD module to forward the data without creating another copy of the data.
-rw-r--r--openbsc/include/openbsc/bsc_nat.h1
-rw-r--r--openbsc/src/nat/bsc_nat_utils.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h
index 423f00942..2792f002c 100644
--- a/openbsc/include/openbsc/bsc_nat.h
+++ b/openbsc/include/openbsc/bsc_nat.h
@@ -300,6 +300,7 @@ uint32_t bsc_mgcp_extract_ci(const char *resp);
int bsc_write(struct bsc_connection *bsc, struct msgb *msg, int id);
int bsc_do_write(struct write_queue *queue, struct msgb *msg, int id);
+int bsc_write_msg(struct write_queue *queue, struct msgb *msg);
int bsc_write_cb(struct bsc_fd *bfd, struct msgb *msg);
/* IMSI allow/deny handling */
diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c
index a458afdaa..b295f3512 100644
--- a/openbsc/src/nat/bsc_nat_utils.c
+++ b/openbsc/src/nat/bsc_nat_utils.c
@@ -273,7 +273,11 @@ int bsc_do_write(struct write_queue *queue, struct msgb *msg, int proto)
{
/* prepend the header */
ipaccess_prepend_header(msg, proto);
+ return bsc_write_msg(queue, msg);
+}
+int bsc_write_msg(struct write_queue *queue, struct msgb *msg)
+{
if (write_queue_enqueue(queue, msg) != 0) {
LOGP(DINP, LOGL_ERROR, "Failed to enqueue the write.\n");
msgb_free(msg);