diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-05-26 22:56:59 +0200 |
---|---|---|
committer | laforge <laforge@gnumonks.org> | 2019-06-18 18:09:26 +0000 |
commit | 1626f909461becfe1bb09707640ab23685b970dd (patch) | |
tree | 53813aaf3aef62737bb66bc25d97c14b48fecb56 /include/osmocom | |
parent | 062cd20993f6c6c0525c17cfe94b8721db79964d (diff) |
Re-introduce support for IPA-encapsulated MGCP
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 create 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')
-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 1f9872a41..2ad7c685e 100644 --- a/include/osmocom/bsc/bsc_msc_data.h +++ b/include/osmocom/bsc/bsc_msc_data.h @@ -33,6 +33,7 @@ #include "osmux.h" #include <osmocom/core/timer.h> +#include <osmocom/core/select.h> #include <osmocom/gsm/protocol/gsm_04_08.h> @@ -135,6 +136,16 @@ struct bsc_msc_data { enum osmux_usage use_osmux; /* Whether we detected the MSC supports Osmux (during BSSMAP_RESET) */ bool remote_supports_osmux; + + /* 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 used 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); |