Commit Graph

2285 Commits

Author SHA1 Message Date
Holger Hans Peter Freyther 7fc9a27bf1 nat: Do not use 0/0 for mux/timeslot by default
0 is a valid timeslot and we should not use it... use
a negative value to be save.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 317ae72c47 nat: Clear the connection on a DLCX
We can forget about the timeslot/multiplex when getting
the DLCX. This way we make room for the next connection
that might need to reuse this address.
2010-06-15 20:24:15 +08:00
Holger Hans Peter Freyther 7a773696dc nat: Always initialize the out pointer...
Always initialize the pointer to a invalid value in case
we encounter a parsing error or such.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther c87c8b748e nat: Fix the test case by allocating a config.
For the statistics we do need to have an allocated config,
otherwise we will nicely crash.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 08a1b16674 nat: Return the SCCP Connection again...
We will reset the multiplex in a DLCX message and then
we can reset the multiplex as well...even if the MGCP
connection is staying open. or at least this is a theory.

The MSC likes to leave a connection open during CallControl
when hanging up early enough in the process.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther eb52e89c3a nat: Return the newest SCCP connection...
In case we have a stale SCCP connection with an Endpoint that
we want to reassign...use the newest (last) occurence of that
as it is most likely the one we want to handle.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 3d0049f4a0 nat: Increase the right counter on calls. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 8b5100698b nat: Add new connections to the end of the list
By adding them to the end the VTY interface will only append
connections and not change the order on each invocation.
2010-06-15 20:24:14 +08:00
Holger Freyther d6b616a388 nat: Remove the SHOW_STR from none show commands. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 979a309c94 nat: Print the LAC that was searched for and not found. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther c615c260ea nat: Mention when we do not find a BSC for a given token.
This might help to identify what is wrong with the config
of the BSC. Also using the result of TLVP_VAL as a char
pointer looks suspicious...
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 6d5a60041a nat: Print the IP address of the BSC that does not respond to the query. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 8139553962 nat: Make the MSC configurable. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther a88742cf5e nat: Move MSC ip address into the config..
The address can still be specified on the cli and it will
overwrite the config in the config file.
2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther 1395948e18 Use osmocore tlv definition for GSM0808. 2010-06-15 20:24:14 +08:00
Holger Hans Peter Freyther d1278c1fc9 nat: Two fixes for the write memory case...
Add new BSCs to the tail so we keep the sort order when writing
them out to the vty, fix the LAC command.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 8bdcf55b22 bsc_msc_ip.c: Create the GSM network earlier, send the reset on each connection
Create the GSM network at the end of the init, send the
GSM reset on each reconnection and close a small window
when we would send a SCCP msg before being authenticated.

For that we have introduced an authenticated into the bsc_msc
struct and will manage it inside the bsc_msc_ip.c
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther c16cf27bd5 nat: Add config option to filter/handle certain imsi'es. 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther a4ed81c8d9 [statistics] Count the times we lost the connection to the MSC. 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther bcfebb2c1d [nat] Add show statistics to the nat 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther d4702862d3 [statistics] Provide basic statistics for the NAT
Count number of SCCP connections, number of BSC reconnects,
number of calls. For most of them we have a per BSC and a
global count.

Right now all structs using the counters survive until the
end of the application so we do not need to free them.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 57f874ad8d [nat] Change the command strings
Put the Target/Object first... Apparently this is more what people
that know IOS expect to do.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 290d84e15f nat: Set a dummy bts_ip to avoid misdetection of the bts...
It was possible that the nat detected the core network
gateway as the bts just due being the first to send data
to the port. Fix it by setting a dummy bts_ip to force
the mgcp_network code to compare the in_addr.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther b8a337356a nat: Handle unknown RLSD by send a RLC back to the network. 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 0176eb44f5 nat: Attempt to handle exceptions on the fd and trat them as connection loss 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 870663af20 nat: Print the IP address of the connected BSCs 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 02aee149f6 nat: Rename variable to make it use msc in the name 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 2896df7605 nat: Attempt to have a single BSC write method
This method currently prepends the IPA header and sends
the data. In the future we might be able to use SCTP for
it.

We have to remove the IPA header from the static messages
for that to work.

This code is untested.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther ce512c5473 nat: Rename bsc_write to bsc_send_data 2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther b752761a3d nat: Send the reset after we have received the init ack
Sending the reset right away will upset the MSC and we
need to wait for the first contact.
2010-06-15 20:24:13 +08:00
Holger Hans Peter Freyther 7cab16619e nat: Fix the reset message and prepend the IPA header 2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther bba593406b nat: Allow to realloc already allocated endpoints
E.g. when the MGCP on the BSS is not responding we could block
all of our endpoints. As we are mostly in the middle and forward
bits we will happily reallocate the endpoints.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther af0ff6c46a nat: Send a GSM0808 message to the MSC when we are reconnecting
The rest of the code should filter the reset ack msg. This should
make the MSC give up all resources it had allocated for us.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther dd16b425c8 nat: Attempt to make MGCP forwarding more robust
When not being able to allocate the msgb for the forwarded data
there is no point in keeping and preparing the transaction. So
we can move the msg creation a bit up and only do the allocations
after having done the msgb allocation.

When receiving a DLCX we will now delete the endpoint right away. This
means when a BSS does not respond to the DLCX our endpoint will not
be blocked. E.g. this could happen when the MGCP is restarting or
in similiar conditions. When the BSS is not responding we move the
burden up the chain to the CallAgent. We have to still keep track
of the transaction id and the bsc pointer to keep the mgcp forward
routine working.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther fb7a934cfc nat: Redo a merge with master that got lost on the cherry-pick 2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther 6b087d18f5 nat: Send a RLSD to the network for connections belonging to the BSC
Sending a RLSD with SCCP failure makes the MSC free all the resources
(MGCP, audio channels), right now we are ignoring the RLC we get from
the network and print a unhandled message.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther f464ea54d1 nat: Print a MSG when receiving unknown SCCP messages. 2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther 47dd4944ae nat: Store the config in the connection instead of the lac
This allows that we can print the Nr. next to the lac
and it allows us to change the lac at runtime without
reconnecting the BSC.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther a7c377d593 nat: Close the filedescriptor when ignoring the request. 2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther 5f291d5077 nat: Add logging commands for the nat as well. 2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther 2066b8c267 nat: Fix thinko... use the right fd to determine the IP of the bts
Use the fd of the BSC Connection to determine the IP address of the
BTS as we are seeing it.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther 92febd3ea4 nat: Improve the log message and print the errno/strerror(errno) 2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther 4ad5850d63 nat: Set the MGCP audio payload to -1.
This value is copied into the bts_audio_payload when allocating
a BTS MGCP endpoint. For the nat we have actually no interest in
patching MGCP messages. We will patch them to the network because
the code will do it anyway, we will not patch things back to the
BTS.
2010-06-15 20:24:12 +08:00
Holger Hans Peter Freyther d2dd6e878c Revert "nat: Remember where the BTS is listening for things."
Remove the code to parse port as we need to discover the
BTS behind the nat and most likely it will have a different
port than the one advertised by the BTS.

This reverts commit c6a1fe773d.
2010-06-15 20:24:11 +08:00
Holger Hans Peter Freyther 530c4b1aad nat: Print the unknown byte as a integer instead of charachter
The value might be a non printable one.
2010-06-15 20:24:11 +08:00
Holger Hans Peter Freyther 9d90da9843 bsc_msc.c: Print the error message of the connection. 2010-06-15 20:24:11 +08:00
Holger Hans Peter Freyther f46ce5329d nat: Patch IT messages as well..
We need to patch the source/dest reference inside the messages
as well otherwise we will see failures in the SCCP connection
on long calls.
2010-06-15 20:24:11 +08:00
Holger Hans Peter Freyther 0a6f62f8e3 nat: Test forwarding Inactivity Test messages.
No change needed to the code.
2010-06-15 20:24:11 +08:00
Holger Hans Peter Freyther 26a43896cd nat: Close all endpoints used by a BSC when the BSC is gone
Cleanup all endpoints that belonged to a given BSC. This is
one part of the cleanup, the other is to bring down the SCCP
link properly.
2010-06-15 20:24:11 +08:00
Holger Hans Peter Freyther 5cc94fb86a nat: Remember a pending delete on an endpoint and carry it out later 2010-06-15 20:24:11 +08:00