Commit Graph

133 Commits

Author SHA1 Message Date
Harald Welte 4ee5c4b208 ISM: correctly handle TC-U-ERROR component in class1/class2 op 2013-06-25 16:14:01 +02:00
Harald Welte 3a58450d11 TCAP ISM: trap the EXIT signal to avoid getting killed too early
When we receive a TC-END with RESULT-L, the process hierarchy might
kill us before we received the RESSULT-L, or aftger we received it,
but before we had a chance to deliver it to the TC User.

Trapping the EXIT flag solves the problem.  It also means that the EXIT
signal will not propagate to other linked processes.  However, there
should be no other processes, as ISM is not starting any.
2013-06-24 17:17:41 +02:00
Harald Welte cb55abc0f7 TCAP CCO: Handle case where ReturnResult.result is asn1_NOVALUE 2013-06-24 14:40:19 +02:00
Harald Welte 8d32188896 The ReturnResult.result SEQUENCE is actually optional, not mandatory 2013-06-24 14:34:07 +02:00
Harald Welte 2e85c582e7 TCAP TSM: remove old debug print 2013-06-24 12:22:27 +02:00
Harald Welte ee5a1d7f5e TCAP ISM: Send primitives with correct prefix/tuple 2013-06-24 12:15:44 +02:00
Harald Welte 82d7f610ee TCAP ISM: Don't generate ERROR REPORT on stop due to timer expiry
If we don't state 'normal' as 'stop' reason, gen_fsm will generate an
ERROR_REPORT, which is not what we want here.
2013-06-24 09:41:15 +02:00
Harald Welte ad354b3136 tcap_user: wrap gen_server call to allocate new dialogue ID 2013-06-24 09:41:13 +02:00
Harald Welte 63a908e220 TCAP CCO: implement indication of 'lastComponent' to TC-USER
The TC-User can now look at the 'lastComponent' member of the
component in order to determine if this is the last component
within the current message, or if there will be more components.
2013-06-24 09:41:10 +02:00
Harald Welte d7932419d9 TCAP DHA: Store user-provided dialogueID as otid in state 2013-06-24 09:41:07 +02:00
Harald Welte 7a05586c5d add empty ebin/{ansi,itu} directories 2013-06-18 12:36:20 +02:00
Harald Welte f8b955678f edoc doesn't support multiple authors in one @author tag 2013-06-18 12:34:16 +02:00
Harald Welte 7c65bc9ef1 Update TCAPMessages.asn to work with osmo_cap
asn1ct will fail with a 'cant check' error of this change is not made.
2013-06-18 12:21:59 +02:00
Harald Welte 0f844098b2 Makefile: remove deprecated +driver option 2013-06-10 13:39:14 +02:00
Harald Welte efbaae2b38 Makefile: Build asn1 generated modules with debug info 2013-06-10 13:37:57 +02:00
Harald Welte 38c579aca9 DHA: properly implement differences of ACTIVE and INIT SENT state
When we are in initiation_sent state, the logic regarding the neccessity
and treatment of the dialogueInfo is different than active state.

However, it is reasonably similar so that we can use the same function
'is_or_active()' to implement the handling of TR-{CONTINUE,END}.ind
in one function, respectively rather than copy+paste code.
2013-06-10 13:36:06 +02:00
Harald Welte 4eef43beee DHA: Ensure TR-END always contains a valid TR-userData record
otherwise the ASN1 encoder will raise an exception
2013-06-10 12:27:28 +02:00
Harald Welte 722715ae9e TSM: Don't attempt to create an END message with no dest trans id 2013-06-10 12:26:46 +02:00
Harald Welte 1760c1538d TC.asn: Mark "argument" part of Invoke as 'OPTIONAL'
Even thought th TCAP spec seems to indicate it is not optional, in fact
it apparently is :/
2013-06-10 12:26:05 +02:00
Harald Welte a7c2afc83e DHA: Store TR-END record in loop state on TC-END request
We need to put the TR-END record in the loop data state once we receive
the TC-END.req from TCU, even in 'basic' termination mode.  Only this
way, code in the wait_for_end_components can actually access/use that
2013-06-10 09:39:13 +02:00
Harald Welte d5260e0a5d TSM: print reason for termination in debug logging 2013-06-10 09:38:48 +02:00
Harald Welte 0637b91934 CCO: TCAP 'Invoke' parameters are not OPTIONAL
... so we cannot feed asn1_NOVALUE into the encoder, but have to
pass an empty list instead. sigh.
2013-06-10 09:00:51 +02:00
Harald Welte f319881540 tcap_invocation_sup: Use unique name for each ISM
This bug prevented multiple INVOKE to exist in parallel.
2013-06-10 08:49:43 +02:00
Harald Welte babe0e92cd DHA: After sending TR-CONTINUE from initiation-received state we go to active 2013-06-09 23:13:56 +02:00
Harald Welte f0d0e908d1 DHA: don't forget to 'request-components' in TC-CONTINUE
when TCU requests a TC-CONTINUE, DHA has to request pending
components from CCO.
2013-06-09 23:01:40 +02:00
Harald Welte 1e7edddd7f Always include AARE DialoguePDU if sending first END/CONTINUE
According to the spec regarding dialogue handling, the first
CONTINUE or END in response to a BEGIN must always contain a
dialogue portion with an AARE PDU, acknowledging protocol version and
application context name.
2013-06-09 22:13:41 +02:00
Harald Welte 0a00ca8a20 DHA: make extract_dialogue_portion() safe for asn1_NOVALUE 2013-06-09 16:19:58 +02:00
Harald Welte 0afe128c20 DHA: fix missing '' around atom with '-' in its name
... otherwise it would be treated like an arithmetic expression
2013-06-09 16:19:57 +02:00
Harald Welte cc3bbf9876 DHA: Always send dialogue portion in 'initiation_received'
Whether or not the local TC-User specifies a userPortion doesn't matter,
we always need to respond with a dialoguePortion confirming protocol
version and AC name to the originator.
2013-06-09 16:15:44 +02:00
Harald Welte 0d786b3171 TSM: outgoing END needs DTID and CallingParty
We need to store the SCCP CalledAddress in the TSM state at the time we
receive the BEGIN of this dialogue.
2013-06-08 10:37:49 +02:00
Harald Welte 0c1ac01cf6 DHA: AARE protocol-version is always an array of versions! 2013-06-08 10:11:22 +02:00
Harald Welte ce41e7f2a9 TCO needs to know the PID of the user to deliver incoming BEGIN
If TCO detects an incoming BEGIN, it starts tcap_transaction_sup
which in turn start dha_fsm and ism_fsm, who both need to know
to whom to send the new components

We nw send those to the Pid that was set by the user using
gen_server:call(TCOpid, set_usap).  This is most likely not the right
approach, as most apps will probably want to create a new process for
each dialogue.  Needs improvement later.
2013-06-08 09:04:02 +02:00
Harald Welte db99b66859 TCO: fix generation of incoming tcap_transaction_sup tree
This moves the 'server' side of the TCAP code to generate a proper
tcap_transaction_sup sub-tree on an incoming BEGIN
2013-06-08 09:02:50 +02:00
Harald Welte f1803eabfb DHA: fix parsing of BEGIN dialogue portion on incoming msgs 2013-06-08 01:14:21 +02:00
Harald Welte 3bf400d91a TSM: we already receive decoded asn.1, don't try to feed that to decoder again 2013-06-08 00:55:01 +02:00
Harald Welte 47c1432648 CCO: use osmo_util:asn1_val() rather than local copy 2013-06-08 00:35:00 +02:00
Harald Welte d98371a2f4 TCAP TCO Server: Use 'TR' module to encode Abort 2013-06-07 23:15:42 +02:00
Harald Welte b85bdc8e2a tcap_user: Export get_dialg_id/1 2012-02-10 12:18:45 +01:00
Harald Welte cb24a47d2d ISM: remove one FIXME (forwarding TC-U-REJECT to usap) 2012-02-08 22:05:15 +01:00
Harald Welte 36561032eb components_sup: More verbosity when starting 2012-02-02 23:47:29 +01:00
Harald Welte d0b28f51c3 ISM: use gen_fsm:send_event(usap), not gen_server:cast(usap) 2012-02-01 21:58:13 +01:00
Harald Welte 148d299b28 tcap_user: resolve CCO/DHA for all TC- primitives 2012-01-31 22:10:53 +01:00
Harald Welte 77d0ee7b13 CCO: properly convert InvokeID of received components 2012-01-31 21:28:24 +01:00
Harald Welte e7540c5c33 DHA: make sure that the 'ok' of ASN.1 decoder doesn't end up in components list 2012-01-31 21:06:34 +01:00
Harald Welte 12f95d3935 TSM: use default QoS values if not provided in TR-* prim
According to Q.771, it is a User option if QoS paramters are passed
down.  We simply use default paramters if none have been provided.
2012-01-31 20:54:24 +01:00
Harald Welte 250b36f2d8 TCO: make sure transaciton IDs are always converted from binary to int 2012-01-31 20:43:17 +01:00
Harald Welte 67f6051009 DHA: Always store TR-* record in state.state, not TC-* 2012-01-31 18:55:42 +01:00
Harald Welte ae3aa8c3f2 DHA: Use incoming DialogueID from user as Transaction ID in TR sub-layer
Theoretically, Dialogue IDs and Transaction IDs are two independent
namesepaces.  However, since TC is the only user of TR, we can simply
establish a 1:1 mapping.
2012-01-31 18:36:06 +01:00
Harald Welte f5005c00e0 CCO: Use empty list [] instead of indefined for empty state.components 2012-01-31 18:35:27 +01:00
Harald Welte d8c6cf5e18 CCO: remove dead code 2012-01-31 18:09:47 +01:00