Commit Graph

1788 Commits

Author SHA1 Message Date
Holger Hans Peter Freyther
c33701c4e5 nat: Check the authentication bit later...
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-02 03:47:09 +02:00
Holger Hans Peter Freyther
44d92b4728 bsc_msc_ip.c: Return after having freed the msgb
When reading MGCP is failing (e.g. because the udp socket
is not connected yet) we would have freed the msgb but we
didn't return and then executed msgb_put on a dead buffer.
2010-04-02 03:28:30 +02:00
Holger Hans Peter Freyther
8aaec620da nat: Return MGCP messages to the call agent
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-01 10:16:28 +02:00
Holger Hans Peter Freyther
a5a4014d67 nat: Allow to send MGCP messages from the BSC to the network 2010-04-01 08:47:12 +02:00
Holger Hans Peter Freyther
9d519189ae nat: Handle CRCX/MDCX/DLCX at the nat
* 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-04-01 08:21:33 +02:00
Holger Hans Peter Freyther
f0fc618782 [mgcp] Look at the bts addr set at the endpoint
This will allow to discover the ports of a bts when we only know
the addr and have multiple bts's to handle.
2010-04-01 07:56:04 +02:00
Holger Hans Peter Freyther
c57575bea8 nat: Test rewriting of MGCP messages to patch ip and port
Add code to change the ip and port for audio data inside
MGCP messages. This is needed because the BSS might be
behind the NAT and can not reach the network directly and
might be behind a nat so the announced sourceport is not
the one as we see it.
2010-04-01 07:41:23 +02:00
Holger Hans Peter Freyther
8cdfe9fc37 nat: Add code to find a BSC connection by the given msc multiplex 2010-04-01 07:41:23 +02:00
Holger Hans Peter Freyther
0959f8cbe6 [mgcp] Export header parsing via mgcp internal
This will be used by the NAT code to implement custom protocol
handling on top of that.
2010-04-01 07:41:23 +02:00
Holger Hans Peter Freyther
f21028985e [mgcp] Do not operate on the ->data pointer, use ->l2h instead
This would have been broken once we attempt to parse encapsulated
MGCP messages.
2010-03-31 13:26:46 +02:00
Holger Hans Peter Freyther
483b768ab2 bsc-msc: Flush the write queue when we have lost the connection 2010-03-31 13:15:26 +02:00
Holger Hans Peter Freyther
82cb311c4f nat: First go at handling MGCP inside the nat
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-31 13:15:19 +02:00
Holger Hans Peter Freyther
2980442e33 [mgcp] Degrade verbosity to debug 2010-03-31 12:31:09 +02:00
Holger Hans Peter Freyther
fa7afb31e9 nat: Add an example configuration for the BSC NAT with MGCP 2010-03-31 11:53:36 +02:00
Holger Hans Peter Freyther
7513b3a1c2 [mgcp] Add a new config option to set the call agent ip addr
In the case of the nat we only want to communicate with one
upstream call agent and this can now be configured.
2010-03-31 11:46:41 +02:00
Holger Hans Peter Freyther
135d99b36e [mgcp] Regroup struct mgcp_cfg members and provide some hints 2010-03-31 11:35:20 +02:00
Holger Hans Peter Freyther
5aaf7c164c [mgcp] Add a helper function to convert from GSM0808 ts/mux to MGCP endpoint
Move the conversion of GSM0808 timeslot and multiplex from
the bssap.c into the mgcp.h so it can be reused by multiple
users. The weird math comes from the mapping of the MSC...
2010-03-31 09:27:04 +02:00
Holger Hans Peter Freyther
790db1e01b nat: In the case of losing the MSC, reset all endpoints
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-31 09:16:56 +02:00
Holger Hans Peter Freyther
81a8975662 nat: bsc_mgcp_clear is called from within the remove function
No need to call it twice... All endpoints should be properly
freed as part of the SCCP disconnection.
2010-03-31 09:15:05 +02:00
Holger Hans Peter Freyther
fd876b7488 bsc_msc_ip: Use the autobind functionality of the kernel
We do not care about the source port for the callagent relay
and can use the autobind functionality of the kernel to pick
a port for us...
2010-03-31 08:41:52 +02:00
Holger Hans Peter Freyther
2ffe7aa340 bsc_msc_ip: Create a local UDP socket and relay MGCP messages
Attempt to bind to the local callagent port and send messages
from the MSC TCP connection to the MGCP and do it the otherway
around as well.
2010-03-31 08:39:53 +02:00
Holger Hans Peter Freyther
538ea6d5c6 [nat] Send a RSIP down to the BSC after it connects
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.
2010-03-31 07:30:58 +02:00
Holger Hans Peter Freyther
e14ec0dab4 [mgcp] Handle the RSIP with resetting all endpoints
We could change that the message came from a special ip
address/port to secure this service in general but we don't
do that right now.
2010-03-31 07:01:35 +02:00
Holger Hans Peter Freyther
8252b9b947 [mgcp] Add some parsing for RSIP messages coming in
This will just call a callback and leave all the handling
to the application.
2010-03-31 06:39:35 +02:00
Holger Hans Peter Freyther
9fb88021dd [mgcp] Remove unused method from the mgcp
This was removed when sending the RSIP was
removed from the code.
2010-03-31 06:26:44 +02:00
Holger Hans Peter Freyther
b031d6ecae [mgcp] Switch from DEBUG to LOGP in the mgcp_main.c 2010-03-31 06:16:45 +02:00
Holger Hans Peter Freyther
fcfdde5390 [mgcp] Remove the sending of RSIP
This message is ignored by the call agent and we were
sending this on the first request which we maybe should
not ignore...
2010-03-30 15:41:03 +02:00
Holger Hans Peter Freyther
571ba8e4da nat: Add MGCP code and parsing to the nat code..
For the nat we will have NAT and MGCP in the same process
and this commit starts with that. We are linking in the MGCP
code and one can embed MGCP config snippets...
2010-03-30 13:08:32 +02:00
Holger Hans Peter Freyther
bed6234e26 [mgcp] The networking code needs a source addrs..
Make the source address mandantory and complain about
complain when it is missing. The address is mandantory
as it needs to be put into the MGCP messages...
2010-03-30 13:00:40 +02:00
Holger Hans Peter Freyther
9d24578812 [mgcp] Move mgcp init into the main method... 2010-03-30 12:43:53 +02:00
Holger Hans Peter Freyther
a087c4e75d [mgcp] Fix format string usage 2010-03-30 12:43:33 +02:00
Holger Hans Peter Freyther
6b64b26d8b nat: Look at the assignment command and remember on which timeslot the data is
This information will be needed when we are trying to forward
MGCP connections to and from the BSC through the IPA protocol.
2010-03-30 12:01:24 +02:00
Holger Hans Peter Freyther
22252a98e3 sccp: Move the destruction of the sccp connection to a new place 2010-03-30 10:45:48 +02:00
Holger Hans Peter Freyther
957bc93244 nat: Return the SCCP connection, change order of patching and updating
* 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.
2010-03-30 09:17:53 +02:00
Holger Hans Peter Freyther
18bbe2e8a0 misc: Do not prepend 0x when using %p in printf. 2010-03-30 08:41:17 +02:00
Holger Hans Peter Freyther
1b17913cbc nat: Fail more early in the case of not being authenticated
This is also fixing a possible memory leak.
2010-03-30 07:45:52 +02:00
Holger Hans Peter Freyther
ce2a36840d nat: Add test case and data for paging by lac test. 2010-03-30 06:51:53 +02:00
Holger Hans Peter Freyther
0e09feccb0 nat: Some more input validation... on the paging command. 2010-03-30 06:51:23 +02:00
Holger Hans Peter Freyther
40a1de699a nat: Documentation fix... use nat for the parameter 2010-03-30 06:39:37 +02:00
Holger Hans Peter Freyther
d906a366c8 nat: Verify that the configured LACs are unique across the nat 2010-03-30 06:08:56 +02:00
Holger Hans Peter Freyther
d44d4c8c8b nat: Move paging by lac handling code into the utils file
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.
2010-03-30 05:57:42 +02:00
Holger Hans Peter Freyther
af0e1d7a85 nat: Add a test case for the connection tracking
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.
2010-03-30 02:43:11 +02:00
Holger Hans Peter Freyther
d21b4d7f98 nat: Fix the lookup of connections to and from 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...
2010-03-29 17:43:32 +02:00
Holger Hans Peter Freyther
3bdaa69fb2 nat: Keep track of both sides of the connection
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.
2010-03-29 17:43:32 +02:00
Holger Hans Peter Freyther
5c0132882a nat: Assign the connection inside the new helper function. 2010-03-29 15:14:15 +02:00
Holger Hans Peter Freyther
ed443e949e nat: Actually add the connection to the SCCP list of active connections
Add the connection to the list of active connections. Otherwise
we are not able to find the connection.
2010-03-29 15:03:54 +02:00
Holger Hans Peter Freyther
1df69f3c64 filter: Move logging level down to INFO 2010-03-29 14:59:59 +02:00
Holger Hans Peter Freyther
d7cafafeee debug: Fix debugging for the nat category. 2010-03-29 14:59:21 +02:00
Holger Hans Peter Freyther
e09348d366 nat: Compare the IPA size with the actual size of the data...
One sanity check that was needed in my test case..
2010-03-29 14:58:43 +02:00
Holger Hans Peter Freyther
5f1b7c14f5 nat: Move creation of the structs to a separate file
This way one can create the bsc_nat structure in unit tests..
2010-03-29 12:48:36 +02:00