aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/nat/bsc_nat.c
AgeCommit message (Collapse)AuthorFilesLines
2010-07-05nat: Remove the first_contact variable.Holger Hans Peter Freyther1-1/+0
2010-07-05nat: Create a method to determine if any MSC is connected.Holger Hans Peter Freyther1-1/+1
In the future we will have multiple MSC connections so we will need to figure if any of them is active.
2010-07-05nat: Store the msc_con in the data of the bsc_fdHolger Hans Peter Freyther1-8/+12
* Stop using nat->msc_con in the read_cb but use the data.
2010-07-05nat: Make queue_for_msc use the msc_con parameter, pass in the right msc_conHolger Hans Peter Freyther1-17/+23
* Return msg'es to the right MSC Con. Right now it is nat->msc_con. * When forwarding from BSC to MSC, use the msc_con inside the sccp_connections. This means we will only forward data with a connection to the BSC.
2010-07-05nat: Keep track of the MSC handling the connection.Holger Hans Peter Freyther1-0/+1
In the future we might have multiple MSCs connected and need to dispatch it to the right one.
2010-06-17nat: Count the number of dropped SCCP and MGCP calls as well.Holger Hans Peter Freyther1-0/+6
Count the number of dropped calls and lost SCCP connections due the loss of a connection to the BSC...
2010-06-17nat: Switch per BSC counters to the rate ctr.Holger Hans Peter Freyther1-2/+6
This is switching the simple statistics to the rate counter and is updating all users...
2010-06-17bsc_api: Move gsm48_rcvmsg into the BSC API and dispatch.Holger Hans Peter Freyther1-5/+0
The next step in the way to the BSC API. We have a clear a new connection was opened signal now... and the MSC could use it...
2010-06-15nat: Attempt to update the VTY usage to the latest versionHolger Hans Peter Freyther1-3/+26
* Install the show commands to be available in the enable mode as well * Provide a copyright header..
2010-06-15nat: Do not use the bssap.h include as it does not exist in this branch.Holger Hans Peter Freyther1-2/+1
2010-06-15[nat] Add ip-tos option to the nat.Holger Hans Peter Freyther1-0/+5
This is applied to all incoming BSC connections.
2010-06-15msc: Add msc ip-tos NR option for the BSCHolger Hans Peter Freyther1-1/+1
Allow to set the TOS field via the VTY interface. The SO_PRIORITY was not used as it has no effect on the packets being sent (in contrast to the documentation).
2010-06-15[nat] Make the refusal more complicated to support more MSCsHolger Hans Peter Freyther1-7/+51
We will need to confirm the connection, then we can send the GSM48 message, then we need to close the connection... the embedding in the refusal method was way too easy..
2010-06-15[nat] Make create_sccp_src_ref return the SCCP Connection.Holger Hans Peter Freyther1-1/+1
Right now it was not possible to just find a connection, by returning the connection that is created we will have direct access to it. It will be used by the local connection handling.
2010-06-15[nat] Remove parameter that is never accessed directlyHolger Hans Peter Freyther1-1/+1
The msgb needs to be around when we access the parsed structure but that needs to be guranteed by the caller handing out the parsed structure.
2010-06-15[nat] Add the notion of a "local" connection.Holger Hans Peter Freyther1-0/+7
A local connection is only between the MUX and the real BSC. We will not forward anything to the MSC. This will be needed for the IMSI filtering as sending a CREF is not liked by every BSC...
2010-06-15[nat] Do not access the con after the removalHolger Hans Peter Freyther1-3/+15
In case of a RLC message we will destroy the SCCP connection. This means that accessing the con and con->bsc will access old memory. Keep the status local and move the con into an inner scope.
2010-06-15[nat] Send a GSM48 message within the reject messageHolger Hans Peter Freyther1-1/+19
2010-06-15[nat] Move the SCCP CREF handling into a new method.Holger Hans Peter Freyther1-7/+17
We will need to generate messages with a proper reason and it is easier to do that from a dedicated method.
2010-06-15[nat] Use and print the connection type of a SCCP connection.Holger Hans Peter Freyther1-0/+1
2010-06-15[nat] Set the connection type/reason as out parameterHolger Hans Peter Freyther1-1/+2
We are analyzing each CR message and it is nice to know the reason these connections were created. Change the nat method.
2010-06-15[nat] Mention where the MSG is coming from.Holger Hans Peter Freyther1-1/+1
2010-06-15[sccp/nat] Make it optional to send data on a SCCP Connection RefuseHolger Hans Peter Freyther1-1/+1
This can be used to send a Location Updating Reject down to the BSC when it is clear that a subscriber is not allowed.
2010-06-15[nat] Separate exit2/exit3 as this can not be shared...Holger Hans Peter Freyther1-1/+6
We have tried to send a refuse for arbitary things and ended up with a segfault... separate the exi2 and exit3 label to have separate exits and cleanups.
2010-06-15[nat] Add a token to the nat config and handle ID GETHolger Hans Peter Freyther1-3/+16
This allows to chain a nat with a nat by answering to the id get code and sending the token.
2010-06-15nat: Introduce a nat filter that is working on the CR message.Holger Hans Peter Freyther1-0/+10
Currently there is no implementation but the refusal code is in place and will send a refusal back to the BSC.
2010-06-15abis: Pass the abis_om_obj_inst in the nm_state_event..Holger Hans Peter Freyther1-1/+2
2010-06-15nat: Have a recycle timer that removes unconfirmed SCCP connections.Holger Hans Peter Freyther1-0/+32
The MSC does not respond to a SCCP CR with Paging Response as GSM payload, when the response comes in 'too late'. Prevent the MUX having stale connections and start removing old connections every 20 minutes.
2010-06-15nat: Print the MSC status with a new vty command.Holger Hans Peter Freyther1-15/+14
2010-06-15nat: Using the right fd can be a good idea as wellHolger Hans Peter Freyther1-1/+1
2010-06-15nat: Fix bad bug, make sure the fd is not overwritten..Holger Hans Peter Freyther1-11/+11
The adding of the innocent looking code was actually overwrote the fd and then stupid things happened. Rename variables to avoid that. rc,ret should be scratch variables...
2010-06-15nat: 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-06-15nat: Improve log messages. Refer to ip and fd.Holger Hans Peter Freyther1-3/+6
2010-06-15nat: Make ping/pong timeout configurable.Holger Hans Peter Freyther1-3/+6
2010-06-15nat/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-06-15nat: 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-06-15nat: Do not allow a BSC to send auth messages twice.Holger Hans Peter Freyther1-0/+6
2010-06-15nat: Improve log message and refer to the BSC that was lost.Holger Hans Peter Freyther1-2/+6
2010-06-15nat: Report some more contextsHolger Hans Peter Freyther1-1/+11
2010-06-15nat: 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-06-15nat: Allocate a named context to make dumping allocations possibleHolger Hans Peter Freyther1-0/+2
This is fixing the SIGUSR1 to really report the allocated memory on stderr.
2010-06-15nat: 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-06-15nat: 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-06-15nat: Handle all queueing to the MSC through the same function.Holger Hans Peter Freyther1-16/+12
2010-06-15nat: 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-06-15nat: 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-06-15nat: 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-06-15[nat] Degrade the message to a plain debug output.Holger Hans Peter Freyther1-1/+1
2010-06-15[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-06-15[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.