diff options
| author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-04-16 15:47:59 +0200 | 
|---|---|---|
| committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-05-13 17:54:44 +0200 | 
| commit | 18506c850c3bbcbfa814e07dc02a17fdb5f7bb9a (patch) | |
| tree | dc184100572bce10bf914f030f35f18387d8db7c /include | |
| parent | 38176d297d63af994dcd2d96bdc0b93895db98dd (diff) | |
gsm0808: Introduce Osmocom extensions to announce Osmux support
IE GSM0808_IE_OSMO_OSMUX_SUPPORT (T, 1 byte) is sent in AoIP appended to
BSSMAP RESET in order to announce the peer that its MGW supports handling
Osmux streams upon call set up.
IE GSM0808_IE_OSMO_OSMUX_CID (TV, T 1 byte & V 1 byte) is sent in AoIP
during call set up:
* MSC->BSC Assignment Request
* BSC->MSC Assignemnt Complete
The 1 byte value contains the local Osmux CID, aka the recvCID aka CID where the
peer sending the Assign Req/Compl will look for Osmux frames on that
call. Hence, the peer receiving this CID value must use it to send Osmux
frames for that call.
As a result, a given call leg BSC<->MSC can have one different Osmux CID
per direction. For example:
* MS => MGW_BSC ==CID 0==> MGW_MSC
* MS <= MGW_BSC <=CID 1=== MGW_MSC
This allows for setups with 256 call legs per BSC on scenarios where NAT
is not a problem, where MSC can have a pool of 256 CID per MGW_BSC (or
remote peer).
Related: OS#2551
Change-Id: I28f83e2e32b9533c99e65ccc1562900ac2aec74e
Diffstat (limited to 'include')
| -rw-r--r-- | include/osmocom/gsm/gsm0808_utils.h | 1 | ||||
| -rw-r--r-- | include/osmocom/gsm/protocol/gsm_08_08.h | 4 | 
2 files changed, 5 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h index 3a7beb70..9cfaea68 100644 --- a/include/osmocom/gsm/gsm0808_utils.h +++ b/include/osmocom/gsm/gsm0808_utils.h @@ -100,6 +100,7 @@ uint8_t gsm0808_enc_aoip_trasp_addr(struct msgb *msg,  				    const struct sockaddr_storage *ss);  int gsm0808_dec_aoip_trasp_addr(struct sockaddr_storage *ss,  				const uint8_t *elem, uint8_t len); +int gsm0808_dec_osmux_cid(uint8_t *cid, const uint8_t *elem, uint8_t len);  uint8_t gsm0808_enc_lcls(struct msgb *msg, const struct osmo_lcls *lcls);  int gsm0808_dec_lcls(struct osmo_lcls *lcls, const struct tlv_parsed *tp); diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index aa01ee5c..9806e083 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -303,6 +303,10 @@ enum GSM0808_IE_CODING {  	GSM0808_IE_SELECTED_OPERATOR		= 0x98,  	GSM0808_IE_PS_REGISTERED_OPERATOR	= 0x99,  	GSM0808_IE_CS_REGISTERED_OPERATOR	= 0x9a, + +	/* Osmocom extensions: */ +	GSM0808_IE_OSMO_OSMUX_SUPPORT		= 0xf0, +	GSM0808_IE_OSMO_OSMUX_CID		= 0xf1,  };  /* 3GPP TS 48.008 3.2.3 Signalling Field Element Coding */  | 
