It really doesn't make sense to share the event list betwen those for
several reasons.
First, because ech of those FSM relate to different things:
* smscb_message_fsm: Handling/scheduling of 1 smscb towards all peers
* smscb_peer_fsm: Handling/scheduling of 1 smscb towards 1 peer.
The former has higher level interface used by the REST
API, plus some mid level interface used by smscb_peer_fsm.
The later has a mid level interface used by smscb_message_fsm to
interact, and a lower level interface used by the SBcAP/CBSP links to
talk to.
Furthermore, this makes it a lot easier understanding which events are
sent from one to another FSM.
Change-Id: I909474d1ff4ec7ed20aff0981da47074397df6cb
If cause != accepted, submit a NACK to the upper layers.
In that case, in the upper layers we don't want to parse the PDU IE
"Unknown Tracking Area List" since it shouldn't be there. 3GPP TS
29.168 4.3.4.3.6 states:
"""
This IE shall only be included if the Cause IE indicates Message accepted, which means the MME will proceed with the
request for Tracking Areas that are known to the MME. The Cause IE indicating Tracking area not valid is used when
all Tracking Areas in the Request are invalid.
"""
Change-Id: I0a4d5bdbb6c4fd3870a4f4ebf226668b70fea06a
ASN1C encoding/decoding can get really verbose. Furthermore, it should
only be enabled under really specific conditions, so it makes sense to
have it under its own category.
Change-Id: Ia4cbae2395532d9b5b7b9177a7d0f31bf777d751
Previous naming is misleading, as it seems to indicate the function is
used to generate any kind of message, which is wrong.
Change-Id: Ib0228c64bbf104accdbbebb6076004a6a1f44c6f
Move code from message_handling containing both code for generic
cbc_message and specific cbsp_message into thers files. The former are
moved to cbc_message.c and the later to cbsp_msg.c, similar to what's
already done for SBc-AP messages.
Change-Id: Ie4082e40f23170cfd6c573fbbb7beb8c6226b6e6
This patch adds support to set up a CBSP link so that osmo-cbc connects
as a TCP client to the BSC, which runs as a TCP server.
Similary, support to set up a SBc-AP link so that osmo-cbc connects
as a SCTP client to the MME, which runs as SCTP server.
A new "mode (client|server|disabled)" VTY command is added to use one
mother or the other, and also to disable the link and hence the peer
until it is set again. This is useful if the peer is under manintenance
for instance.
client sockets are created automatically when the "peer" vty node is
exited if the link is not yet created, hence creating it at startup or
if moved back from "disabled" mode. If client socket dies, it will
keep attempting reconnect every 5 seconds.
Related: OS#4945
Change-Id: I3ec54b615b41b56f7a9c64298e3fcaac37f4b60e
This will be needed when we add client support, since clients will
require the mgr structs to be available during VTY parsing.
Change-Id: I14e49d8d2e603925d7f06a7edb710c0eceb02ea3
This way it's clear and we have in one place all the related code that
neds to be run at a given time.t
Change-Id: I00fe755340664d4ca4a5cfdcae8d4cd33b2f40a1
This way we lock the type (proto) of each peer at creation time.
Otherwise, having the possibility of changing the protocol of the peer
makes all the code too complex and there's no good way to prevent the
protocol from being changed at any time creating unexpected issues.
If the user wants to change the protocol, she can do so by removing the
peer and re-adding it through the VTY with the desired protocol.
Change-Id: I47756dddd8f9b8450ba14c914614fd2391d5486e
The issue was not spotted until now because until recently
cbc_vty_go_parent was not called due to another bug.
Change-Id: I697597438d8c45f5956b12e2a6ea76413e945e5e
As the naming suggests, install_lib_element[_ve]() should be used
for commands registered by libraries. This API allows to enforce
some rules for command attribute letters and should not be used
by application specific commands.
Change-Id: I8c0c8ac66dfc4fc2b8bf9102fba0df2dd988e7c9
This way we end up with more "global" configs at the start of the file,
which are read/applied first, and later all the per-peer information,
which is a list of variable length.
Change-Id: I7623ea5874552e57764327e94a9c3a4de7b71d67
Delay allocating the structures until really needed.
First do checks agains the opened connection, and if an issue is
detected simply close the fd.
Next, fetch or allocate the related peer.
Finally, create the link from the fd.
This makes it easier to add early extra checks later when peers will
contain info on link_mode (client|server|disabled) later on.
Change-Id: Id4f83ec6b0b14e556b1caa9c80e7f68d062fec57
* link -> srv_link to avoid confusing with cbsp/sbcap links
* clients -> links, since it holds links, which in the future will be
both TCP/SCTP clients and servers.
Change-Id: I4717f49413af45b45059c1601a667f4161b4ca8a
Rename osmo_*_cbc -> cbc_*_mgr:
Now they only hold TCP/SCTP server related conns, but will also hold
TCP/SCTP client conns in the near future.
Rename osmo_cbc_*_client -> cbc_*_link:
The term "client" is confusing, since it doesn't exist in CBSP/SBcAP,
and will later support connecting to server at TCP/SCTP level.
Let's use "link" instead, similar to what's used in osmo-bsc which
already supports both TCP client and server modes.
Change-Id: Ia9d26dc1593c8ee08dce348fe9f5f4c9398ea2a5
Let's create missing header files and move stuff around to have a clear
view of who implements what.
Change-Id: Ib32091d716b33bca58e2d3acf8840b52824c0bd3