diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-02-26 20:21:21 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-02-26 20:21:21 +0100 |
commit | 8b0079909d1ae229862e3372dbfb26955772725d (patch) | |
tree | d0b5b748dc9c693dc8ab8a61459e7390ee1cc2c3 /openbsc/src | |
parent | 1d7f2f80b8e55085543752cc3e81cbb504b5338d (diff) | |
parent | 10ca3799e7a769fe01a76cc0569db95cdf0f7c16 (diff) |
Merge remote branch 'origin/on-waves/sccp'
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/sccp/sccp.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/openbsc/src/sccp/sccp.c b/openbsc/src/sccp/sccp.c index 9cd7c9c68..b1da2c721 100644 --- a/openbsc/src/sccp/sccp.c +++ b/openbsc/src/sccp/sccp.c @@ -471,6 +471,25 @@ int _sccp_parse_udt(struct msgb *msgb, struct sccp_parse_result *result) return 0; } +static int _sccp_parse_it(struct msgb *msgb, struct sccp_parse_result *result) +{ + static const u_int32_t header_size = sizeof(struct sccp_data_it); + + struct sccp_data_it *it; + + if (msgb_l2len(msgb) < header_size) { + DEBUGP(DSCCP, "msgb < header_size %u %u\n", + msgb_l2len(msgb), header_size); + return -1; + } + + it = (struct sccp_data_it *) msgb->l2h; + result->data_len = 0; + result->source_local_reference = &it->source_local_reference; + result->destination_local_reference = &it->destination_local_reference; + return 0; +} + /* * Send UDT. Currently we have a fixed address... @@ -1307,8 +1326,12 @@ int sccp_parse_header(struct msgb *msg, struct sccp_parse_result *result) case SCCP_MSG_TYPE_UDT: return _sccp_parse_udt(msg, result); break; + case SCCP_MSG_TYPE_IT: + return _sccp_parse_it(msg, result); + break; }; + LOGP(DSCCP, LOGL_ERROR, "Unimplemented MSG Type: 0x%x\n", type); return -1; } |