aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-12-31 16:53:40 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-12-31 16:54:04 +0100
commit0945961af38e66799689979a5f5a076d490d0164 (patch)
tree97e280d588a59eabf18500f7c04d73ea112e750d
parent80ab4c60668ac63ea52fbe5d65a212df934570f5 (diff)
mtp: Add some SSNs we want to handle.
This should be really configurable. SSN=1 should always lead to a SSA, the others depend on what we run on our end of the link.
-rw-r--r--src/mtp_layer3.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mtp_layer3.c b/src/mtp_layer3.c
index b788208..e2e9980 100644
--- a/src/mtp_layer3.c
+++ b/src/mtp_layer3.c
@@ -440,9 +440,14 @@ static int mtp_link_sccp_data(struct mtp_link *link, struct mtp_level_3_hdr *hdr
}
prt = (struct sccp_con_ctrl_prt_mgt *) &msg->l3h[0];
- if (prt->assn != 254 || prt->apoc != MTP_MAKE_APOC(link->opc)) {
- LOGP(DINP, LOGL_ERROR, "Unknown SSN/APOC assn: %u, apoc: %u/%u\n",
- prt->assn, ntohs(prt->apoc), prt->apoc);
+ if (prt->apoc != MTP_MAKE_APOC(link->opc)) {
+ LOGP(DINP, LOGL_ERROR, "Unknown APOC: %u/%u\n",
+ ntohs(prt->apoc), prt->apoc);
+ type = SCCP_SSP;
+ } else if (prt->assn != 1 && prt->assn != 254 &&
+ prt->assn != 7 && prt->assn != 8 && prt->assn != 146) {
+ LOGP(DINP, LOGL_ERROR, "Unknown affected SSN assn: %u\n",
+ prt->assn);
type = SCCP_SSP;
} else {
type = SCCP_SSA;