aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/nat/bsc_nat.c
AgeCommit message (Collapse)AuthorFilesLines
2010-05-05nat: Use TCP_NODELAY for the connection to the BSC.Holger Hans Peter Freyther1-1/+7
We do not want to use NAGLE for the BSC connection.
2010-05-05nat: Improve log messages. Refer to ip and fd.Holger Hans Peter Freyther1-3/+6
2010-05-05nat: Make ping/pong timeout configurable.Holger Hans Peter Freyther1-3/+6
2010-05-03nat/bsc: Send PONG on PING, send PING from the BSC tooHolger Hans Peter Freyther1-5/+18
We do want to send PING/PONG in both ways to have a heartbeat on the TCP connection. When switching over to SCTP we can rely on the builtin heartbeat functionality.
2010-05-02nat: Send a IPA PING down the stream and wait for the pong.Holger Hans Peter Freyther1-0/+55
We will send a ping every 20 seconds and if we have no pong within 5 seconds we will close down the BSC connection and wait for a reconnect. We will start this after having authenticated the BSC and we stop the timer when destructing the BSC connection.
2010-05-02nat: Do not allow a BSC to send auth messages twice.Holger Hans Peter Freyther1-0/+6
2010-05-01nat: Improve log message and refer to the BSC that was lost.Holger Hans Peter Freyther1-2/+6
2010-04-30nat: Report some more contextsHolger Hans Peter Freyther1-1/+11
2010-04-27nat: Add a command to close a given BSC ConnectionHolger Hans Peter Freyther1-5/+4
This can be used to clear stale connections for a given BSC or to force a reconnect of the BSC.
2010-04-23nat: Allocate a named context to make dumping allocations possibleHolger Hans Peter Freyther1-0/+1
This is fixing the SIGUSR1 to really report the allocated memory on stderr.
2010-04-23nat: Only close connections that were fully connectedHolger Hans Peter Freyther1-1/+2
Remember that we have seen a CC and have a valid destination local reference now and only send a fake RLC to the MSC when we had connections in this state.
2010-04-23nat: When having a proper close down, or a short read close the connectionHolger Hans Peter Freyther1-9/+8
For now close the connection when having a short read. This might be due a network issue (loss of segment) or similiar. As we are not handling these issues well, let us close the connection.
2010-04-22nat: Handle all queueing to the MSC through the same function.Holger Hans Peter Freyther1-16/+12
2010-04-22nat: Change MGCP DLCX handling and send dummy MDCX to the BTS.Holger Hans Peter Freyther1-1/+1
When setting a new MSC timeslot to a SCCP connection check if any of the existing connections have this timeslot, if so we will send a DLCX down the stream to make sure it is closed there, when we will CRCX this new timeslot we will happily reallocate it. When the SCCP connection goes away, or we get a DLCX from the network, or the BSC is gone we will send a DLCX message down the stream as well. When we receive a CRCX from the network we will forward the CRCX as usual and send a dummy MDCX after it. For the DLCX and the dummy MDCX we send a custom MGCP message that will not provoke an answer. Even if the downstream MGCP GW will answer we will ignore it due the dummy transaction id that is not used anywhere else. This change should make sure that we close the dowstream endpoint all the time, even when the DLCX arrives after the SCCP connection is torndown.
2010-04-22nat: Move the write queue init to the allocation functionHolger Hans Peter Freyther1-1/+0
This is required for unit tests that want to queue messages and see if we can provoke a memleak.
2010-04-22nat: Clear the queued messages at the endHolger Hans Peter Freyther1-4/+5
It is possible that the calls from the loop would queue more messages for the BSC and then we would have a nice memory leak... Move it to the bottom.
2010-04-21[nat] Degrade the message to a plain debug output.Holger Hans Peter Freyther1-1/+1
2010-04-21[nat] Add option to forbid the paging to the BSC.Holger Hans Peter Freyther1-1/+3
This can be done for testing purposes and to allow making a BTS crash that can not handle paging requests properly.
2010-04-21[nat] Lookup by BSC Connection otherwise the point of reassigning the is ↵Holger Hans Peter Freyther1-3/+3
defeated When sending a MSG to the MSC try to find the to be used "src" reference by comparing the reference on the BSC and the BSC connection. Only this tuple needs to be unique. Actually only when looking at the SRC REF we need to compare the BSC as the dest reference should be unique but we are just making the check a bit stronger to make it look symmetric.
2010-04-21[nat] Slightly improve logging..Holger Hans Peter Freyther1-1/+2
If we find the connection of a different BSC at least log the BSCs that had duplicated references. We should also dump the src ref and such but i am not doing this right now.
2010-04-18nat: Increase the right counter on calls.Holger Hans Peter Freyther1-1/+1
2010-04-17nat: Print the LAC that was searched for and not found.Holger Hans Peter Freyther1-2/+4
2010-04-17nat: Mention when we do not find a BSC for a given token.Holger Hans Peter Freyther1-1/+3
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-04-17nat: Print the IP address of the BSC that does not respond to the query.Holger Hans Peter Freyther1-1/+6
2010-04-17nat: Make the MSC configurable.Holger Hans Peter Freyther1-1/+1
2010-04-17nat: Move MSC ip address into the config..Holger Hans Peter Freyther1-7/+15
The address can still be specified on the cli and it will overwrite the config in the config file.
2010-04-13[statistics] Count the times we lost the connection to the MSC.Holger Hans Peter Freyther1-0/+2
2010-04-13[statistics] Provide basic statistics for the NATHolger Hans Peter Freyther1-0/+7
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-04-08nat: Handle unknown RLSD by send a RLC back to the network.Holger Hans Peter Freyther1-1/+31
2010-04-08nat: Rename variable to make it use msc in the nameHolger Hans Peter Freyther1-2/+2
2010-04-08nat: Attempt to have a single BSC write methodHolger Hans Peter Freyther1-19/+19
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-04-08nat: Rename bsc_write to bsc_send_dataHolger Hans Peter Freyther1-8/+8
2010-04-07nat: Send the reset after we have received the init ackHolger Hans Peter Freyther1-5/+7
Sending the reset right away will upset the MSC and we need to wait for the first contact.
2010-04-07nat: Fix the reset message and prepend the IPA headerHolger Hans Peter Freyther1-0/+1
2010-04-07nat: Send a GSM0808 message to the MSC when we are reconnectingHolger Hans Peter Freyther1-0/+28
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-04-06Merge remote branch 'origin/master' into on-waves/bsc-masterHolger Hans Peter Freyther1-8/+8
* Move to the new log code and update binaries * Catch up with lchan changes from master Conflicts: openbsc/include/openbsc/Makefile.am openbsc/include/openbsc/gsm_data.h openbsc/src/Makefile.am openbsc/src/bsc_rll.c openbsc/src/chan_alloc.c openbsc/src/debug.c openbsc/src/gsm_04_08.c openbsc/src/gsm_04_11.c openbsc/src/gsm_subscriber_base.c openbsc/src/handover_logic.c openbsc/src/silent_call.c openbsc/src/transaction.c openbsc/src/vty_interface.c openbsc/src/vty_interface_cmds.c
2010-04-06nat: Send a RLSD to the network for connections belonging to the BSCHolger Hans Peter Freyther1-1/+27
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-04-06nat: Print a MSG when receiving unknown SCCP messages.Holger Hans Peter Freyther1-0/+3
2010-04-06nat: Store the config in the connection instead of the lacHolger Hans Peter Freyther1-2/+2
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-04-06nat: Close the filedescriptor when ignoring the request.Holger Hans Peter Freyther1-0/+1
2010-04-06nat: Patch IT messages as well..Holger Hans Peter Freyther1-0/+2
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-04-05nat: Close all endpoints used by a BSC when the BSC is goneHolger Hans Peter Freyther1-0/+3
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-04-05nat: Logging improvement for the nat.Holger Hans Peter Freyther1-1/+2
Print some more information, e.g. when a BSC is connected and authenticated, print the SCCP ref number.
2010-04-02nat: Check the authentication bit later...Holger Hans Peter Freyther1-6/+12
When moving it up here the code started to reject the identity responses of the bsc and we would never authenticate. Move it back down.
2010-04-01nat: Return MGCP messages to the call agentHolger Hans Peter Freyther1-0/+3
Attempt to find the message by transaction id, then patch the response and use the IP/PORT of the local network, update the ci with the one from the BSC. This is currently not tracking any state of the MGCP and will not handle two bsc's... this will need to happen later. With this in we should be feature complete and now enter the mode of making all of this work reliable and fixing thinko's and other bugs.
2010-04-01nat: Handle CRCX/MDCX/DLCX at the natHolger Hans Peter Freyther1-31/+0
* Forward a rewritten msg to the BSS. We change the IP and port to point to the NAT instead of the core network. We also keep track of the BSC and the transacition id. * Handle the case where we have not found a SCCP connection and need to send a response ourselves.
2010-03-31nat: First go at handling MGCP inside the natHolger Hans Peter Freyther1-0/+6
Listen on the MGCP gateway port and let our protocol stack handle everything for now. We will need to have some more control over things though.
2010-03-31nat: In the case of losing the MSC, reset all endpointsHolger Hans Peter Freyther1-0/+1
When losing the SCCP connection make sure that we free all endpoints. The disconnection of the BSC should already make sure they are closed but this makes sure everything is properly reset.
2010-03-31nat: bsc_mgcp_clear is called from within the remove functionHolger Hans Peter Freyther1-4/+1
No need to call it twice... All endpoints should be properly freed as part of the SCCP disconnection.
2010-03-31[nat] Send a RSIP down to the BSC after it connectsHolger Hans Peter Freyther1-0/+41
Make sure the MGCP attached to the BSC is resetting all endpoints whenever the BSC is connecting to us as we assume that all endpoints are available.