diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-05-26 22:56:59 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-11-29 18:14:25 +0100 |
commit | ba6c93d3c4563032892e71e4c87b2152df3c74cb (patch) | |
tree | 4a6be11f4aa0c1b747cbee7850f153e8b22e564b /include/osmocom/bsc | |
parent | 7ae0f9c271fd403bab96897056eb2efe87b2adec (diff) |
Re-introduce support for IPA-encapsulated MGCPlaforge/mgcp-ipa
Old osmo-bsc-sccplite already supported this, but in the migration
over to libosmo-sigtran and to real 3GPP AoIP, this functionality
got lost.
We now crate a UDP proxy socket. Any MGCP commands received via IPA
from MSC (or rather: bsc_nat) are retransmitted to the MGW via UDP on
this socket. Any responses back from the MGW received on the UDP
socket are retransmitted back to MSC/bsc_nat as MGCP inside the IPA
multiplex.
Closes: OS#2536
Change-Id: I38ad8fa645c08900e0e1f1b4b96136bc6d96b3ab
Diffstat (limited to 'include/osmocom/bsc')
-rw-r--r-- | include/osmocom/bsc/bsc_msc_data.h | 11 | ||||
-rw-r--r-- | include/osmocom/bsc/osmo_bsc_sigtran.h | 9 |
2 files changed, 20 insertions, 0 deletions
diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h index 0c2094e3a..5cda2aabd 100644 --- a/include/osmocom/bsc/bsc_msc_data.h +++ b/include/osmocom/bsc/bsc_msc_data.h @@ -31,6 +31,7 @@ #include "debug.h" #include <osmocom/core/timer.h> +#include <osmocom/core/select.h> #include <osmocom/gsm/protocol/gsm_04_08.h> @@ -140,6 +141,16 @@ struct bsc_msc_data { uint32_t x_osmo_ign; bool x_osmo_ign_configured; + + /* Proxy between IPA/SCCPlite encapsulated MGCP and UDP */ + struct { + /* local (BSC) IP address to be used */ + char *local_addr; + /* local (BSC) UDP port to be usd to talk with MGW */ + uint16_t local_port; + /* UDP socket for proxying MGCP via SCCPlite/IPA */ + struct osmo_fd ofd; + } mgcp_ipa; }; /* diff --git a/include/osmocom/bsc/osmo_bsc_sigtran.h b/include/osmocom/bsc/osmo_bsc_sigtran.h index bd8b06398..b934d51d3 100644 --- a/include/osmocom/bsc/osmo_bsc_sigtran.h +++ b/include/osmocom/bsc/osmo_bsc_sigtran.h @@ -44,3 +44,12 @@ void osmo_bsc_sigtran_tx_reset_ack(const struct bsc_msc_data *msc); /* receive + process a CTRL command from the piggy-back on the IPA/SCCPlite link */ int bsc_sccplite_rx_ctrl(struct osmo_ss7_asp *asp, struct msgb *msg); + +/* receive + process a MGCP message from the piggy-back on the IPA/SCCPlite link */ +int bsc_sccplite_rx_mgcp(struct osmo_ss7_asp *asp, struct msgb *msg); + +/* send a message via SCCPLite to given MSC */ +int bsc_sccplite_msc_send(struct bsc_msc_data *msc, struct msgb *msg); + +/* we received some data on the UDP proxy socket from the MGW. Pass it to MSC via IPA */ +int bsc_sccplite_mgcp_proxy_cb(struct osmo_fd *ofd, unsigned int what); |