diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-12-03 11:00:04 +0100 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2019-02-04 13:36:26 +0100 |
commit | 0df904dea9106587f40ec379e9cc05ea251beb7e (patch) | |
tree | 02ccf5ec37b6633677153892dee6b73a1724465f /include/osmocom/msc/sgs_server.h | |
parent | c7de62cc53fa6ad985015403dd9af8f1627136a0 (diff) |
Add SGs Interface
Add an SGs interface (3GPP TS 29.118) to osmo-msc in order to support
SMS tunneling and Circuit Switched Fallback (CSFB)
Change-Id: I73359925fc1ca72b33a1466e6ac41307f2f0b11d
Related: OS#3615
Diffstat (limited to 'include/osmocom/msc/sgs_server.h')
-rw-r--r-- | include/osmocom/msc/sgs_server.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/osmocom/msc/sgs_server.h b/include/osmocom/msc/sgs_server.h new file mode 100644 index 000000000..a89022d9e --- /dev/null +++ b/include/osmocom/msc/sgs_server.h @@ -0,0 +1,53 @@ +/* (C) 2018-2019 by sysmocom s.f.m.c. GmbH + * All Rights Reserved + * + * Author: Harald Welte, Philipp Maier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#pragma once + +#include <arpa/inet.h> +#include <osmocom/gsm/protocol/gsm_29_118.h> + +#define DEFAULT_SGS_SERVER_IP "0.0.0.0" +#define DEFAULT_SGS_SERVER_VLR_NAME "vlr.example.net" + +/* global SGs state */ +struct sgs_state { + /* list of MMEs (sgs_mme_ctx) */ + struct llist_head mme_list; + + /* list of SCTP client connections */ + struct llist_head conn_list; + + /* SCTP server for inbound SGs connections */ + struct osmo_stream_srv_link *srv_link; + + struct { + char local_addr[INET6_ADDRSTRLEN]; + uint16_t local_port; + /* user-configured VLR name (FQDN) */ + char vlr_name[SGS_VLR_NAME_MAXLEN]; + /* timers on VLR side */ + unsigned int timer[_NUM_SGS_STATE_TIMERS]; + /* countrs on VLR side */ + unsigned int counter[_NUM_SGS_STATE_COUNTERS]; + } cfg; +}; + +struct sgs_state *sgs_server_alloc(void *ctx); +int sgs_server_open(struct sgs_state *sgs); |