diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-05-14 03:34:35 +0800 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-05-15 05:35:20 +0800 |
commit | 7bf332a4806eea684509dd3d661df7e8f6fdf944 (patch) | |
tree | dc9653683b9bfb910f68b512ce82b52722f9bf54 /openbsc/src/sccp | |
parent | 277f035dee8e851732174fa41e261854fade4674 (diff) |
[sccp] Export function to create SCCP Refuse message.
Diffstat (limited to 'openbsc/src/sccp')
-rw-r--r-- | openbsc/src/sccp/sccp.c | 15 |
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; |