Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
- Fix the generation of the assignment failure message
- Parse the permitted indicator of the assignment request message
|
|
|
|
This is fixing a bug when we try to submit a SMS from the MS to
the network. We send the RLS ESTABLISH REQUEST but as the MS
already established this SAPI we waited for the timeout and failed..
|
|
|
|
|
|
|
|
|
|
For the MSC we need to queue GSM04.08 messages until the
SCCP connection is confirmed to be open and then can send
the stored messages. The queue is limited to 10 messages
at which point new ones will be dropped. Currently the
only messages we get are measurement indication messages
but it is better to be safe than sorry.
The SCCP messages are sent as soon as the connection
is considered established and then no queueing happens
any more. While replacing sccp_connection_write calls
various memory leaks has been fixed.
For the MS we might have received a DTAP and need to do
an operation that requires a roundtrip and want to send
wait until this has happened. The two scenerios are sending
a SMS to the phone that requires to do something special
for the different SAPI. Currently it is assumed that
only one SAPI=0 -> SAPI=3 change happen during the connection.
For the first SAPI != 0 we will send the rll_ request
and then wait for the timeout or confirmation. In case
of timeout a SAPI "n" reject is sent and in case of
success the queue is getting emptied.
|
|
This message will be needed when no RLL connection
on a different SAPI can be established or we don't
want to establish it.
|
|
This is a BSC to be used by on-waves.com to connect to a real
MSC using SCCP over IP.
The following messages and features are currently implemented:
- IPA identity ack's
- COMPLETE LAYER3 INFORMATION
- DTAP
- PAGING COMMAND
- CLEAR COMPLETE/CLEAR REQUEST
- CIPHER MODE COMMAND/ REJECT /COMPLETE
It comes with a tool to create the enum's from the spec and
a very simple test server to do the handshaking.
|
|
This script is parsing the values, converting the bits into
a number and replacing the text... This should help to go from
spec to code more quickly... next thing would be this for the
structs used...
|
|
Allow to configure the number of endpoints at start. Currently
this will not be changed at runtime but one needs to save the
config and restart the system.
|
|
Do not guess the RTCP port as it might be the RTP port
of another connection.
|
|
|
|
Forget where the bts and network is located on DLCX and CRCX otherwise
we would have forwarded BTS data to the wrong endpoint and would have
not tried to discover the BTS again.
In the case of early bind we might get data from the BTS before
the CRCX and after DLCX... just ignore it then
|
|
|
|
|
|
|
|
|
|
This is a simple echo functionality in the MGCP... it
will send the audio back to the network|bts..
|
|
The python script is a simple call-agent driving the
client. Currently it is sending a AuditEndpoint message
and is printing the result.
The bsc_mgcp.c is a standalone process that will implement
a MGCP Gateway for the MSC. On call handling the Call-Agent
will ask the Gateway to "CreateConnection" and then this
gateway needs to communicate with OpenBSC.
Currently CreateConnection,ModifiyConnection,DeleteConnection
and Endpoint auditing is implemented.
[mgcp] Send RSIP on start and on first receive of any message
Ignore the first request and send a RSIP. We do that because
we might tunnel UDP through some other things and have no direct
way to connect to the call-agent.
Also the transaction is not checked and we ignore the response
from the call-agent, actually we print the '200 ' or any other
value as unhandled...
[mgcp] Print the MGCP command next to the response code
This allows to see which commands were sent by the server
mgcp: Terminate it with a new line
[mgcp] Make number of endpoints static...
For now this is fixed to the number of endpoints as of the GSM
specification...
[mgcp] The endpoint names seem to be base 16... use strtoul to parse
Use strtoul to parse the base 16 number from the mgw string.
[mgcp] Log the endpoints as hex numbers...
[mgcp] Only send the RSIP on the first incoming message..
Remove call_agent option (also remove the number from the getopt
call).
[mgcp] Start couting at 1 for the mgcp
[mgcp] Slight attempt to improve the grammar of the strings
[mgcp] Share validation routines between DLCX and MDCX
[mgcp] Remove help for dead config options
[mgcp] Specify a different IN addr in the SDP records
In case of NAT traversal be able to listen on a given
interface (like 127.0.0.1) but claim to receive data
at the beginning of the tunnel.
[mgcp] Fix the static copy of the SDP file
WIP verify out factoring broken..
[mgcp] Introduce VTY to the mgcp for config file parsing...
Parse the MGCP config file via the VTY framework.
[mgcp] Handle SDP parameters through VTY..
Currently the payload type, name and rate can be specified
in the config file.
[mgcp] Add an option to bind all rtp ports early
This can be useful for testing and in deployment to make sure
no runtime resource limit can be hit.
[mgcp] Add some API doc comment
[mgcp] Convert the packets of the example server to ascii
This will allow to easily patch the call id... to run the
server in a loop and make it work with the mediagateway
[mgcp] Assign CI_UNUSED... to be more obvious...
[mgcp] Use DEBUG and not DEBUGPC and specially not printf
Improve the logging a bit in the mgcp
[mgcp] Change the fake server to change the call id
This assume the call-agent will just increment the id
as well.... this is true for our implementation
[mgcp] Generate the transaction id dynamically..
This way wireshark will be more happy about it...
[mgcp] Recognize responses from the network..
This is just recognizing the response code and
then is doing nothing with it. Also change the
script to generate response messages...
[mgcp] Improve debug messages for CRCX/MDCX..
Log on which ports the media gateway is listening
and where the other (server) gateway is located
|
|
Currently this will send a dummy inactivity test message,
there is currently no parsing or API to receive the messages.
The sequencing and credit entries are empty as sequencing
is currently not used at all.
The test is currently limited to send the message and see
if the application is crashing or not.
|
|
include/sccp/sccp_types.h contain Q.713 and GSM definitions
include/sccp/sccp.h is the application interface resembling
the esentials of the UNIX socket interface.
src/sccp.c is the actual implementation of SCCP featuring
connection and UDT1 support.
tests/sccp/sccp.c is testing connection creation and formating
of the SCCP messages used by the A-interface. And
it contains a simple fuzzing test to test the
robustnes of the implementation.
|
|
|
|
|
|
|
|
|
|
|
|
Both GSM 04.08 RR and GSM 08.58 RSL need the multirate config
in the channel modify. Place the config in the lchan, change
the gsm48 methods to not take the argument, change the RSL
implementation to make use of it with the right IE.
The other code should use the t(l)v_put routines as well but
were left untouched for now.
|
|
Reset the whole array instead of just the first element.
|
|
Change the CRCX after the channel has been modified.
|
|
IPA is naming these functions CRCX, MDCX, DLCX to follow
the naming of the MediaGatewayControlProtocol. Change the
code to go from BIND to CRCX (create connection) and from
CONNECT to MDCX (modify connection).
Connect indicates that it is only possible to call it once
while it is possible to call it more than once to modify
the audio parmaters and such. So the IPA terminology is
making a bit more sense here (now that we know it).
|
|
E.g. to analyze the subscr_get/subscr_put behavior one can place
the generate_backtrace into the functions, recompile and then filter
the output with contrib/bt.py to get the function name, file and line.
|
|
|
|
|
|
On channel mode modify and assignment command when using
the a multirate code the multirate configuration must be
present in the packet.
Add a parameter and add a warning when using it in a
broken way.
|
|
Allow to handle the channel requested differently based
on the NECI value for the "paging any" case. This will allow
to open a TCH/H, TCH/F depending on the neci mode.
|
|
Use the correct length when going over the array instead
of using the neci0 values. Remove the fixme from the method
as well as the issue has been addressed by adding a parameter
to the method.
|
|
Not doing this could lead to a double deletion due the paging
request being removed during the callback and afterwards as
well. Change the code to save the callback data, remove the
request, do the callback.
A patch was proposed by Andreas Eversberg and this one is
based on it.
|
|
Assign the encryption status to the right variable.
Signed-off-by: Holger Freyther <zecke@selfish.org>
|
|
Allow to configure the NECI value... and change code
that is relying on the NECI value.
|
|
|
|
|
|
|
|
These became unused when the interface was switched to
use the vty module. It is about time to remove these.
|
|
|
|
|
|
|
|
|