Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This information will be needed when we are trying to forward
MGCP connections to and from the BSC through the IPA protocol.
|
|
|
|
* Return the SCCP connection. This will be needed to store the
assigned timeslot in there.
* Update code to work with this change
* This uncovered a bug in the CC handling, at the time the BSC was
passed it was still a null pointer and the code would have failed.
|
|
|
|
This is also fixing a possible memory leak.
|
|
|
|
|
|
|
|
|
|
Moving it here means we can more easily test this code, there is one
behaviour change with the code that we only support paging messages
with one LAC and will silently ignore the others.
|
|
This test case tests connectiont tracking by sending
a CR, getting a CC, sending a DTAP, receiving a DTAP,
receiving a RLSD, sending a RLC. It verifies that the
messages are properly patched specially the references
at the BSC.
|
|
When sending a message to the MSC in the case of DT1
messages we only have the address of the MSC, so we
need to go with that, otherwise (e.g. in case of a CR, RLC)
we do have the source address and need to patch it.
When forwarding a message to the BSC we do receive
a msg that should contain the patched address, we need
to unpatch it...
|
|
On a CC message we will need to remeber where the source local
reference of the network belonged so we can properly identify
the connection when receiving UDT messages.
|
|
|
|
Add the connection to the list of active connections. Otherwise
we are not able to find the connection.
|
|
|
|
|
|
One sanity check that was needed in my test case..
|
|
This way one can create the bsc_nat structure in unit tests..
|
|
Move patching and reassigning of messages to a new file which
will making testing this functionality more easy.
|
|
Instead of simply exiting the application we will handle it by
giving up all SCCP connections, once we have the MSC back we will
send a GSM 08.08 reset message, and we will free all resources
related to these connections. This includes the primary and secondary
lchan of these connections.
While we are not connected to the MSC we will handle each message
that would open a SCCP connection by giving up the lchan. This has
only been compile tested and will need to be manually tested during
a test session.
This also highlights a DoS that could be used against OpenBSC
by setting up a lchan but never send any GSM L3 message. We will have
to fix that at some point.
|
|
|
|
When we disconnect from the MSC handle it by pushing the problem
to our connected clients. We will simply close all connections,
reject all new BSC connections and attempt to reconnect to the MSC.
|
|
Create a BSC<->MSC interface and use it for the BSC MSC IP and the
BSC NAT to reduce code duplication on handling reconnects to the MSC
and cleaning up the local state. The code is only partially tested
and will contain bugs. Currently both the BSC and the NAT will just
exit on connection loss and this way have the current behavior.
|
|
The latency of setting up of the TCP connection can be quite high,
it is better to connect in a non blocking way. This code is working
by setting the socket nonblocking and temporarily replacing the
bfd callback with the connect handling.
Once the OS has connected our socket we switch back to normal operation.
|
|
Keep track of SCCP connections so we can clear them
when the MSC is going down.
|
|
In case we disconnect with some pending operations we will need to
signal the MSC that something is wrong. This could be by sending a
RLSD directly, or a clear command. Another part of the fix is to
respond with a RLC on unknown RLSD messages.
|
|
Throw away all messages we have scheduled but never delivered
to the BSC.
|
|
|
|
We want to write everything through the write queue, it seemed the
easiest to copy the bytes here and feed the data into the bsc_write
method.
|
|
|
|
|
|
Move all writes into one place so we can switch to the
write queue more easily in the future.
|
|
We are still writing to the BSC directly and don't make real
use of this feature right now but we will need to do it.
|
|
Move the MSC code to a non blocking write.
|
|
This is the socket we listen for incoming BSCs.
|
|
The SCCP stack was changed to give the ownership of the msgb
to the system integration, this allows us to use the stock write
queue to queue the write and write the msg to the MSC once we
are connected again.
|
|
|
|
Instead of deleting the msgb within the SCCP library the implementor
of the write callback needs to free it. This is required for non
blocking io with the server.
|
|
|
|
It is possible that the MSC is not sending the channel type it
needs for the operations it wants to do. Add a configuration option
to assign a TCH in case of paging any requests. It can be a good
idea to leave SDCCHs free for location updating requests.
|
|
the 0.1.1 API is cleaned up and removes all exported global static
arrays (like rlm_cause_strs). There are now proper accessor functions.
|
|
|
|
|
|
and implement the backend using value_string
|
|
Store the mapping from request to channel type in the GSM Network
struct as there is some policy involved with handling the request.
E.g. in a half rate network we don't want emergy calls to be getting
a TCH/F, or we want to have a different policy for early/late assignment
of phone calls.
Update the table when creating the network and when the neci is changed.
|
|
|
|
|
|
|