aboutsummaryrefslogtreecommitdiffstats
path: root/src/sccp_scrc.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-04-02 11:58:17 +0200
committerHarald Welte <laforge@gnumonks.org>2017-04-18 10:08:25 +0000
commit5f0a8df34cae20455a520c3a85cf94124f486bf2 (patch)
treea3be446812b69c3725fb5f6b655af053d7c474e7 /src/sccp_scrc.c
parentafc3b856135237c8ce85ca39a42da892e5bdd9de (diff)
Add IPA/SCCPlite support as SIGTRAN alternative
This tries as good as possible to fit the IPA/SCCPlite stacking into the existing SIGTRAN/SS7 code architecture/model. To the user, the IPA protocol looks like yet another protocol on the same level as the choice between SUA and M3AU. On the inside, things are obviously quite different. We need to handle TCP with IPA framing instead of SCTP for both server and client. We also implement an alternative "ASP FSM" for IPA, which takes care of the CCM handshake (ID_REQ/ID_RESP/ID_ACK/ID_ACK2) for both client and server mode. In server mode, we use the 'unit name' as identifier to look up the AS, similar to how we use a routing context to look up the AS in the xUA case. We also have to bypass activating the default layer manager in the simple client to make sure we don't run into even more complexity. What's missing right now is some way to manually override/set the point codes. As IPA/SCCPlite is missing any routing label, we currently simply generate one with SPC=0/DPC=0, which will obviously not work in most configurations. Change-Id: I9098574cddeba10fcf8f1b6c196a7069a6805c56
Diffstat (limited to 'src/sccp_scrc.c')
-rw-r--r--src/sccp_scrc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/sccp_scrc.c b/src/sccp_scrc.c
index 4491ce6..9a6a865 100644
--- a/src/sccp_scrc.c
+++ b/src/sccp_scrc.c
@@ -142,6 +142,7 @@ static int gen_mtp_transfer_req_xua(struct osmo_sccp_instance *inst,
case OSMO_SS7_ASP_PROT_SUA:
return sua_tx_xua_as(as, xua);
case OSMO_SS7_ASP_PROT_M3UA:
+ case OSMO_SS7_ASP_PROT_IPA:
return sua2sccp_tx_m3ua(inst, xua);
default:
LOGP(DLSCCP, LOGL_ERROR, "MTP-TRANSFER.req for "
@@ -296,7 +297,8 @@ static int scrc_node_6(struct osmo_sccp_instance *inst,
const struct osmo_sccp_addr *called)
{
struct osmo_sccp_user *scu;
-
+ /* it is not really clear that called->pc will be set to
+ * anything here, in the case of a SSN-only CalledAddr */
scu = sccp_user_find(inst, called->ssn, called->pc);
/* Is subsystem equipped? */