aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/sccp
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-05-14 03:34:35 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-05-15 05:35:20 +0800
commit7bf332a4806eea684509dd3d661df7e8f6fdf944 (patch)
treedc9653683b9bfb910f68b512ce82b52722f9bf54 /openbsc/src/sccp
parent277f035dee8e851732174fa41e261854fade4674 (diff)
[sccp] Export function to create SCCP Refuse message.
Diffstat (limited to 'openbsc/src/sccp')
-rw-r--r--openbsc/src/sccp/sccp.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/openbsc/src/sccp/sccp.c b/openbsc/src/sccp/sccp.c
index de18614c3..35589dc8a 100644
--- a/openbsc/src/sccp/sccp.c
+++ b/openbsc/src/sccp/sccp.c
@@ -638,7 +638,7 @@ static void _sccp_set_connection_state(struct sccp_connection *connection, int n
connection->state_cb(connection, old_state);
}
-static int _sccp_send_refuse(struct sccp_source_reference *src_ref, int cause)
+struct msgb *sccp_create_refuse(struct sccp_source_reference *src_ref, int cause)
{
struct msgb *msgb;
struct sccp_connection_refused *ref;
@@ -646,6 +646,11 @@ static int _sccp_send_refuse(struct sccp_source_reference *src_ref, int cause)
msgb = msgb_alloc_headroom(SCCP_MSG_SIZE,
SCCP_MSG_HEADROOM, "sccp ref");
+ if (!msgb) {
+ LOGP(DSCCP, LOGL_ERROR, "Failed to allocate refusal msg.\n");
+ return NULL;
+ }
+
msgb->l2h = &msgb->data[0];
ref = (struct sccp_connection_refused *) msgb_put(msgb, sizeof(*ref));
@@ -657,6 +662,14 @@ static int _sccp_send_refuse(struct sccp_source_reference *src_ref, int cause)
data = msgb_put(msgb, 1);
data[0] = SCCP_PNC_END_OF_OPTIONAL;
+ return msgb;
+}
+
+static int _sccp_send_refuse(struct sccp_source_reference *src_ref, int cause)
+{
+ struct msgb *msgb = sccp_create_refuse(src_ref, cause);
+ if (!msgb)
+ return -1;
_send_msg(msgb);
return 0;