diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-04-02 11:58:17 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-04-18 10:08:25 +0000 |
commit | 5f0a8df34cae20455a520c3a85cf94124f486bf2 (patch) | |
tree | a3be446812b69c3725fb5f6b655af053d7c474e7 /src/sccp_scrc.c | |
parent | afc3b856135237c8ce85ca39a42da892e5bdd9de (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.c | 4 |
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? */ |