Projects
osmocom:master
osmo-bsc
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 87
View file
osmo-bsc.spec
Changed
@@ -18,13 +18,13 @@ Name: osmo-bsc Requires: osmocom-master -Version: 1.10.0.44.5ea9 +Version: 1.10.0.54.0714 Release: 0 Summary: OsmoBSC: Osmocom's Base Station Controller for 2G CS mobile networks License: AGPL-3.0-or-later AND GPL-2.0-or-later Group: Hardware/Mobile URL: https://osmocom.org/projects/osmobsc -Source: osmo-bsc_1.10.0.44.5ea9.tar.xz +Source: osmo-bsc_1.10.0.54.0714.tar.xz Source1: rpmlintrc BuildRequires: automake >= 1.9 BuildRequires: libtool >= 2
View file
commit_071446d1b0086976d0454b11517b24e1ebcbbbea.txt
Added
View file
commit_5ea91cdae4fa7dcc861193c7e90aa39f2910f1e2.txt
Deleted
View file
osmo-bsc_1.10.0.44.5ea9.dsc -> osmo-bsc_1.10.0.54.0714.dsc
Changed
@@ -2,7 +2,7 @@ Source: osmo-bsc Binary: osmo-bsc, osmo-bsc-dbg, abisip-find, osmo-bsc-ipaccess-utils, osmo-bsc-bs11-utils, osmo-bsc-meas-utils, osmo-bsc-doc Architecture: any all -Version: 1.10.0.44.5ea9 +Version: 1.10.0.54.0714 Maintainer: Osmocom team <openbsc@lists.osmocom.org> Homepage: https://projects.osmocom.org/projects/osmo-bsc Standards-Version: 3.9.8 @@ -18,8 +18,8 @@ osmo-bsc-ipaccess-utils deb net extra arch=any osmo-bsc-meas-utils deb net extra arch=any Checksums-Sha1: - fb0cbbe889e0d0ed1b0fd2f722c31eaa56d3c881 590568 osmo-bsc_1.10.0.44.5ea9.tar.xz + 5067b6f1641b1b4c948afd79272e132a2f8055b7 592820 osmo-bsc_1.10.0.54.0714.tar.xz Checksums-Sha256: - 969240e52a47ab4fa152d60db78f2e9aa9faf9b65d5a5aa484fc474df094519e 590568 osmo-bsc_1.10.0.44.5ea9.tar.xz + 50e082a0836ef75dc09a1fc83dc27847150e4cba5fd61e61277026e5277529da 592820 osmo-bsc_1.10.0.54.0714.tar.xz Files: - 4fd5552b02600100bf432b8fa0f2296d 590568 osmo-bsc_1.10.0.44.5ea9.tar.xz + ca913d5e3696fe025d97b00b8b97d9c3 592820 osmo-bsc_1.10.0.54.0714.tar.xz
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/.tarball-version -> osmo-bsc_1.10.0.54.0714.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -1.10.0.44-5ea9 +1.10.0.54-0714
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/TODO-RELEASE -> osmo-bsc_1.10.0.54.0714.tar.xz/TODO-RELEASE
Changed
@@ -7,3 +7,6 @@ # If any interfaces have been added since the last public release: c:r:a + 1. # If any interfaces have been removed or changed since the last public release: c:r:0. #library what description / commit summary line + osmo-bsc VTY Timeslot phys_chan_config will now write back with new dynamic timeslot names: 'DYNAMIC/OSMOCOM' instead of 'TCH/F_TCH/H_SDCCH8_PDCH' and 'DYNAMIC/IPACCESS' instead of 'TCH/F_PDCH' + osmo-bsc CTRL CTRL commands like 'bts.N.channel-load' will now respond with new dynamic timeslot names: 'DYNAMIC/OSMOCOM' instead of 'TCH/F_TCH/H_SDCCH8_PDCH' and 'DYNAMIC/IPACCESS' instead of 'TCH/F_PDCH' + osmo-bsc CTRL,VTY osmo_fsm instance IDs now use new dynamic timeslot names 'DYNAMIC_OSMOCOM' and 'DYNAMIC_IPACCESS'
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/debian/changelog -> osmo-bsc_1.10.0.54.0714.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -osmo-bsc (1.10.0.44.5ea9) unstable; urgency=medium +osmo-bsc (1.10.0.54.0714) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Fri, 03 Mar 2023 08:47:51 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Sat, 04 Mar 2023 22:53:03 +0000 osmo-bsc (1.10.0) unstable; urgency=medium
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/doc/Makefile.am -> osmo-bsc_1.10.0.54.0714.tar.xz/doc/Makefile.am
Changed
@@ -14,6 +14,7 @@ $(builddir)/handover-inter-bsc-in.png \ $(builddir)/mgw-endpoint.png \ $(builddir)/location_services_ta.png \ + $(builddir)/codec_resolution.png \ $(NULL) dot: \
View file
osmo-bsc_1.10.0.54.0714.tar.xz/doc/codec_resolution.msc
Added
@@ -0,0 +1,48 @@ +msc { + hscale="1.7"; + mslabel="MS/BTS",cfglabel="osmo-bsc.cfg",bsclabel="osmo-bsc",__msclabel="MSC",siplabel="SIP"; + + ms => bsc label="EST IND / Compl L3"; + cfg => bsc label="'msc 0'\n'codec-list fr3 hr3 fr2 fr1 hr1'"; + bsc rbox bsc label="build Speech Codec List\ngen_bss_supported_codec_list()"; + bsc => __msc label="Compl L3"; + bsc note __msc label="Speech Codec List (BSS Supported)\n{GSM0808_SCT_FR3 + AMR-cfg,\nGSM0808_SCT_HR3 + AMR-cfg,\nGSM0808_SCT_FR2,\nGSM0808_SCT_FR1,\nGSM0808_SCT_HR1}"; + --- label="AMR-cfg:"; + bsc note __msc label="S0-S15: 16bit flags\nS0 = 1: 4.75 ---- ---- ---- ---- ---- ---- ----\nS1 = 1: 4.75 ---- 5.90 ---- 7.40 ---- ---- 12.2\nS2 = 1: ---- ---- 5.90 ---- ---- ---- ---- ----\nS3 = 1: ---- ---- ---- 6.70 ---- ---- ---- ----\nS4 = 1: ---- ---- ---- ---- 7.40 ---- ---- ----\nS5 = 1: ---- ---- ---- ---- ---- 7.95 ---- ----\nS6 = 1: ---- ---- ---- ---- ---- ---- 10.2 ----\nS7 = 1: ---- ---- ---- ---- ---- ---- ---- 12.2\n\nS8 = 1: 4.75 ---- 5.90 ---- ---- ---- ---- ----\nS9 = 1: 4.75 ---- 5.90 6.70 ---- ---- ---- ----\nS10= 1: 4.75 ---- 5.90 6.70 7.40 ---- ---- ----\nS11= 1: ---- ---- ---- ---- ---- ---- ---- ----\nS12= 1: 4.75 ---- 5.90 6.70 ---- ---- 10.2 ----\nS13= 1: ---- ---- ---- ---- ---- ---- ---- ----\nS14= 1: 4.75 ---- 5.90 ---- ---- 7.95 ---- 12.2\nS15= 1: ---- ---- ---- ---- ---- ---- ---- ----\n\n3GPP TS 28.062 Table 7.11.3.1.3-2: \"Preferred Configurations\",\nsome removed as specified in 3GPP TS 48.008 3.2.2.103"; + + cfg => bsc label="'bts 0'\n'amr tch-x modes 0 2 4 7'"; + bsc rbox bsc label="convert AMR modes to\nbts-S0-S15"; + cfg => bsc label="'msc 0'\n'amr-config 4_75k allowed'"; + bsc rbox bsc label="convert AMR modes to\nmsc-S0-S15"; + bsc => __msc label="Compl L3 Speech Codec List:\nbitwise AND:\nbts-S0-S15 & msc-S0-S15"; + ---; + + ms => __msc label="Bearer Capabilities"; + __msc <= sip label="SDP"; + __msc note sip label="m=audio 12345 RTP/AVP 112 3 111 110\na=rtpmap:112 AMR/8000\na=fmtp:112 mode-set=0,2,4,7\na=rtpmap:3 GSM/8000\na=rtpmap:111 GSM-HR-08/8000\na=rtpmap:110 GSM-EFR/8000"; + + __msc rbox __msc label="combine:\nBSC: Speech Codec List\nMS: Bearer Cap\nSIP: SDP"; + + bsc <= __msc label="BSSMAP Assignment Request\ncontains\nChannel Type\nSpeech Codec List (MSC Preferred)"; + bsc note __msc label="Channel Type\nChannel Rate And Type:\n- prefer full rate\n- prefer half rate\n- indicated by Permitted Speech list\nPermitted Speech 1..9:\n{GSM0808_PERM_FR3,\nGSM0808_PERM_HR3,\nGSM0808_PERM_FR2,\nGSM0808_PERM_FR1,\nGSM0808_PERM_HR1}"; + bsc note __msc label="Speech Codec List (MSC Preferred)\n{GSM0808_SCT_FR3 + AMR-cfg,\nGSM0808_SCT_HR3 + AMR-cfg,\nGSM0808_SCT_FR2,\nGSM0808_SCT_FR1,\nGSM0808_SCT_HR1}"; + + cfg => bsc label="'msc 0'\n'codec-list fr3 hr3 fr2 fr1 hr1'"; + cfg => bsc label="'bts 0'\n'phys_chan_cfg TCH/F'"; + cfg => bsc label="'bts 0'\n'codec-support amr efr fr hr'"; + + cfg rbox bsc label="combine:\n'msc 0' 'codec-list fr3 hr3 fr2 fr1 hr1'\n'bts 0' 'phys_chan_cfg TCH/F'\n'bts 0' 'codec-support amr efr fr hr'\nMSC: Channel Type\nMSC: Speech Codec List (MSC Preferred)\n=>\n{GSM48_CMODE_SPEECH_AMR, FR, S0-S15},\n{GSM48_CMODE_SPEECH_AMR, HR, S0-S15}"; + + cfg => bsc label="'bts 0'\n'amr tch-x bts threshold'\n'amr tch-x bts hysteresis'"; + ms <= bsc label="RSL CHANnel ACTIVation"; + ms note bsc label="Channel Rate and Type: Full/Half rate\nSpeech Coding Algorithm Version: 3 (=AMR)\nMultiRate Configuration:\n- 4.75 | 5.90 | 7.40 | 12.2\n- Threshold / Hysteresis x 3"; + cfg => bsc label="'bts 0'\n'amr tch-x ms threshold'\n'amr tch-x ms hysteresis'"; + ms <= bsc label="RSL Assignment Command"; + ms note bsc label="Channel Description: TCH/F\nSpeech Coding Algorithm Version: 3 (=AMR)\nMultiRate Configuration:\n- 4.75 | 5.90 | 7.40 | 12.2\n- Threshold / Hysteresis x 3"; + + bsc => __msc label="BSSMAP Assignment Complete"; + bsc note __msc label="Chosen Channel: Speech, Full Rate\nSpeech Version (Chosen): FR3\nSpeech Codec (Chosen): FR AMR, S0-S15"; + + __msc => sip label="SDP (optional)"; + __msc note sip label="m=audio 12345 RTP/AVP 112\na=rtpmap:112 AMR/8000\na=fmtp:112 mode-set=0,2,4,7"; +}
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/doc/examples/osmo-bsc/osmo-bsc-4trx.cfg -> osmo-bsc_1.10.0.54.0714.tar.xz/doc/examples/osmo-bsc/osmo-bsc-4trx.cfg
Changed
@@ -46,22 +46,22 @@ phys_chan_config SDCCH8+CBCH hopping enabled 0 timeslot 2 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 3 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 4 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 5 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 6 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 7 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 trx 1 rf_locked 0 @@ -71,28 +71,28 @@ max_power_red 20 rsl e1 tei 1 timeslot 0 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 1 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 2 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 3 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 4 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 5 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 6 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 7 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 trx 2 rf_locked 0 @@ -102,28 +102,28 @@ max_power_red 20 rsl e1 tei 2 timeslot 0 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 1 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 2 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 3 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 4 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 5 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 6 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 7 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 trx 3 rf_locked 0 @@ -133,28 +133,28 @@ max_power_red 20 rsl e1 tei 3 timeslot 0 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 1 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 2 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 3 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 4 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 5 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 6 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 timeslot 7 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM hopping enabled 0 msc 0 allow-emergency allow
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/doc/manuals/chapters/bts.adoc -> osmo-bsc_1.10.0.54.0714.tar.xz/doc/manuals/chapters/bts.adoc
Changed
@@ -296,7 +296,7 @@ .Dynamic timeslot support by various BTS models cols="50%,25%,25%" |=== -| |`TCH/F_TCH/H_SDCCH8_PDCH` |`TCH/F_PDCH` +| |`DYNAMIC/OSMOCOM` |`DYNAMIC/IPACCESS` |ip.access nanoBTS |- |supported |Ericsson RBS |supported |- |sysmoBTS using _osmo-bts-sysmo_ |supported |supported @@ -311,11 +311,13 @@ NOTE: Same as for dedicated PDCH timeslots, you need to enable GPRS and operate a PCU, SGSN and GGSN to provide the actual data service. -==== Osmocom Style Dynamic Timeslots (TCH/F_TCH/H_SDCCH8_PDCH) +==== Osmocom Style Dynamic Timeslots (DYNAMIC/OSMOCOM) -Timeslots of the `TCH/F_TCH/H_SDCCH8_PDCH` type dynamically switch between TCH/F, +`DYNAMIC/OSMOCOM` is an alias for `TCH/F_TCH/H_SDCCH8_PDCH`. + +Timeslots of the `DYNAMIC/OSMOCOM` type dynamically switch between TCH/F, TCH/H, SDCCH8 and PDCH, depending on the channel kind requested by the MSC. The RSL -messaging for `TCH/F_TCH/H_SDCCH8_PDCH` timeslots is compatible with Ericsson RBS. +messaging for these timeslots is compatible with Ericsson RBS. BTS models supporting this timeslot kind are shown in <<dyn_ts_compat>>. @@ -334,10 +336,12 @@ In OsmoNITB, disabling TCH/F on Osmocom dynamic timeslots is the default. In OsmoBSC, the default is to allow both. -==== ip.access Style Dynamic Timeslots (TCH/F_PDCH) +==== ip.access Style Dynamic Timeslots (DYNAMIC/IPACCESS) + +`DYNAMIC/IPACCESS` is an alias for `TCH/F_PDCH`. -Timeslots of the `TCH/F_PDCH` type dynamically switch between TCH/F and PDCH. -The RSL messaging for `TCH/F_PDCH` timeslots is compatible with ip.access +Timeslots of the `DYNAMIC/IPACCESS` type dynamically switch between TCH/F and PDCH. +The RSL messaging for `DYNAMIC/IPACCESS` timeslots is compatible with ip.access nanoBTS. BTS models supporting this timeslot kind are shown in <<dyn_ts_compat>>. @@ -350,7 +354,7 @@ ==== Dynamic Timeslot Configuration Examples -This is an extract of an `osmo-bsc`` config file. A timeslot configuration with +This is an extract of an `osmo-bsc` config file. A timeslot configuration with five Osmocom style dynamic timeslots and one dedicated PDCH may look like this: ---- @@ -362,20 +366,20 @@ timeslot 1 phys_chan_config SDCCH8 timeslot 2 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM timeslot 3 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM timeslot 4 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM timeslot 5 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM timeslot 6 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM timeslot 7 phys_chan_config PDCH ---- -With the ip.access nanoBTS, only `TCH/F_PDCH` dynamic timeslots are supported, +With the ip.access nanoBTS, only `DYNAMIC/IPACCESS` dynamic timeslots are supported, and hence a nanoBTS configuration may look like this: ---- @@ -387,15 +391,15 @@ timeslot 1 phys_chan_config SDCCH8 timeslot 2 - phys_chan_config TCH/F_PDCH + phys_chan_config DYNAMIC/IPACCESS timeslot 3 - phys_chan_config TCH/F_PDCH + phys_chan_config DYNAMIC/IPACCESS timeslot 4 - phys_chan_config TCH/F_PDCH + phys_chan_config DYNAMIC/IPACCESS timeslot 5 - phys_chan_config TCH/F_PDCH + phys_chan_config DYNAMIC/IPACCESS timeslot 6 - phys_chan_config TCH/F_PDCH + phys_chan_config DYNAMIC/IPACCESS timeslot 7 phys_chan_config PDCH ----
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/doc/manuals/chapters/interf_meas.adoc -> osmo-bsc_1.10.0.54.0714.tar.xz/doc/manuals/chapters/interf_meas.adoc
Changed
@@ -63,7 +63,7 @@ NOTE: Currently osmo-bsc makes no use of PDCH interference reports, neither they get forwarded to the BSC co-located PCU over the PCUIF. -For dynamic timeslots (`TCH/F_TCH/H_SDCCH/8_PDCH` and `TCH/F_PDCH`), the +For dynamic timeslots (`DYNAMIC/OSMOCOM` and `DYNAMIC/IPACCESS`), the following expectations apply: * when in TCH/F mode: no interference reports, because the only sub-channel is active;
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/include/osmocom/bsc/assignment_fsm.h -> osmo-bsc_1.10.0.54.0714.tar.xz/include/osmocom/bsc/assignment_fsm.h
Changed
@@ -48,3 +48,4 @@ void assignment_fsm_start(struct gsm_subscriber_connection *conn, struct gsm_bts *bts, struct assignment_request *req); void assignment_reset(struct gsm_subscriber_connection *conn); +void assignment_fsm_update_id(struct gsm_subscriber_connection *conn);
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/include/osmocom/bsc/bsc_msc_data.h -> osmo-bsc_1.10.0.54.0714.tar.xz/include/osmocom/bsc/bsc_msc_data.h
Changed
@@ -133,8 +133,13 @@ /* audio codecs */ struct gsm48_multi_rate_conf amr_conf; bool amr_octet_aligned; - struct gsm_audio_support **audio_support; + + /* Practically, there can be only 5 entries in osmo-bsc: FR1 FR2 FR3 HR1 HR3. Historically, osmo-bsc allowed + * *any* number of entries -- we should not break too strictly on old cfg files. Theoretically, there should be + * room for FR1 to FR7 plus HR1 to HR7 less HR2. Let's just give ample room for all these aspects: */ + struct gsm_audio_support audio_support16; int audio_length; + enum bsc_lcls_mode lcls_mode; bool lcls_codec_mismatch_allow;
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/include/osmocom/bsc/gsm_data.h -> osmo-bsc_1.10.0.54.0714.tar.xz/include/osmocom/bsc/gsm_data.h
Changed
@@ -806,10 +806,7 @@ extern const struct value_string gsm_chreq_descs; extern const struct value_string gsm_pchant_names; extern const struct value_string gsm_pchant_descs; -extern const struct value_string gsm_pchan_ids; const char *gsm_pchan_name(enum gsm_phys_chan_config c); -static inline const char *gsm_pchan_id(enum gsm_phys_chan_config c) -{ return get_value_string(gsm_pchan_ids, c); } enum gsm_phys_chan_config gsm_pchan_parse(const char *name); const char *gsm_chreq_name(enum gsm_chreq_reason_t c); char *gsm_ts_name(const struct gsm_bts_trx_ts *ts); @@ -984,6 +981,8 @@ ver : 7; }; +int gsm_audio_support_cmp(const struct gsm_audio_support *a, const struct gsm_audio_support *b); + extern void talloc_ctx_init(void *ctx_root); enum gsm_bts_type parse_btstype(const char *arg);
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/assignment_fsm.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/assignment_fsm.c
Changed
@@ -303,7 +303,7 @@ osmo_fsm_inst_term(conn->assignment.fi, OSMO_FSM_TERM_REGULAR, 0); } -static void assignment_fsm_update_id(struct gsm_subscriber_connection *conn) +void assignment_fsm_update_id(struct gsm_subscriber_connection *conn) { /* Assignment can do a new channel activation, in which case new_lchan points at the new lchan. * Or assignment can Channel Mode Modify the already used lchan, in which case new_lchan == NULL. */ @@ -313,15 +313,16 @@ return; } - osmo_fsm_inst_update_id_f(conn->assignment.fi, "%s_%u-%u-%u-%s%s%s-%s%u", - conn->fi->id, - new_lchan->ts->trx->bts->nr, new_lchan->ts->trx->nr, new_lchan->ts->nr, - gsm_pchan_id(new_lchan->ts->pchan_on_init), - (new_lchan->ts->pchan_on_init == new_lchan->ts->pchan_is)? "" : "as", - (new_lchan->ts->pchan_on_init == new_lchan->ts->pchan_is)? "" - : gsm_pchan_id(new_lchan->ts->pchan_is), - new_lchan->vamos.is_secondary ? "shadow" : "", - new_lchan->nr - (new_lchan->vamos.is_secondary ? new_lchan->ts->max_primary_lchans : 0)); + osmo_fsm_inst_update_id_f_sanitize(conn->assignment.fi, '_', "%s_%u-%u-%u-%s%s%s-%s%u", + conn->fi->id, + new_lchan->ts->trx->bts->nr, new_lchan->ts->trx->nr, new_lchan->ts->nr, + gsm_pchan_name(new_lchan->ts->pchan_on_init), + (new_lchan->ts->pchan_on_init == new_lchan->ts->pchan_is) ? "" : "as", + (new_lchan->ts->pchan_on_init == new_lchan->ts->pchan_is) ? + "" : gsm_pchan_name(new_lchan->ts->pchan_is), + new_lchan->vamos.is_secondary ? "shadow" : "", + new_lchan->nr - (new_lchan->vamos.is_secondary ? + new_lchan->ts->max_primary_lchans : 0)); } static bool lchan_type_compat_with_mode(enum gsm_chan_t type, const struct channel_mode_and_rate *ch_mode_rate)
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/bsc_vty.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/bsc_vty.c
Changed
@@ -2550,10 +2550,10 @@ if (i != 0) vty_out(vty, " "); - if (msc->audio_supporti->hr) - vty_out(vty, "hr%u", msc->audio_supporti->ver); + if (msc->audio_supporti.hr) + vty_out(vty, "hr%u", msc->audio_supporti.ver); else - vty_out(vty, "fr%u", msc->audio_supporti->ver); + vty_out(vty, "fr%u", msc->audio_supporti.ver); } vty_out(vty, "%s", VTY_NEWLINE); @@ -2711,48 +2711,57 @@ " (fr3: AMR-FR, hr3: AMR-HR, fr2: GSM-EFR, fr1: GSM-FR, hr1: GSM-HR)\n") { struct bsc_msc_data *data = bsc_msc_data(vty); + struct gsm_audio_support tmpARRAY_SIZE(data->audio_support); int i; + /* Nr of arguments must fit in the array */ + if (argc > ARRAY_SIZE(data->audio_support)) { + vty_out(vty, "Too many items in 'msc' / 'codec-list': %d. There can be at most %zu entries.%s", + argc, ARRAY_SIZE(data->audio_support), VTY_NEWLINE); + return CMD_ERR_EXEED_ARGC_MAX; + } + /* check all given arguments first */ for (i = 0; i < argc; i++) { + int j; + /* check for hrX or frX */ if (strlen(argvi) != 3 || argvi1 != 'r' || (argvi0 != 'h' && argvi0 != 'f') || argvi2 < '0' - || argvi2 > '9') - goto error; - } - - /* free the old list... if it exists */ - if (data->audio_support) { - talloc_free(data->audio_support); - data->audio_support = NULL; - data->audio_length = 0; - } - - /* create a new array */ - data->audio_support = - talloc_zero_array(bsc_gsmnet, struct gsm_audio_support *, argc); - data->audio_length = argc; - - for (i = 0; i < argc; ++i) { - data->audio_supporti = talloc_zero(data->audio_support, - struct gsm_audio_support); - data->audio_supporti->ver = atoi(argvi + 2); + || argvi2 > '9') { + vty_out(vty, "Codec name must be hrX or frX. Was '%s'%s", argvi, VTY_NEWLINE); + return CMD_WARNING; + } + /* store in tmp first, to not overwrite data->audio_support in case of error */ + tmpi.ver = atoi(argvi + 2); if (strncmp("hr", argvi, 2) == 0) - data->audio_supporti->hr = 1; + tmpi.hr = 1; else if (strncmp("fr", argvi, 2) == 0) - data->audio_supporti->hr = 0; + tmpi.hr = 0; + + /* forbid invalid versions */ + if (tmpi.ver < 1 || tmpi.ver > 7 + || (tmpi.hr && tmpi.ver == 2)) { + vty_out(vty, "'%s' is not a valid codec version%s", argvi, VTY_NEWLINE); + return CMD_WARNING; + } + + /* prevent duplicate entries */ + for (j = 0; j < i; j++) { + if (gsm_audio_support_cmp(&tmpj, &tmpi) == 0) { + vty_out(vty, "duplicate entry in 'msc' / 'codec-support': %s%s", argvi, VTY_NEWLINE); + return CMD_WARNING; + } + } } - return CMD_SUCCESS; + memcpy(data->audio_support, tmp, sizeof(data->audio_support)); + data->audio_length = argc; -error: - vty_out(vty, "Codec name must be hrX or frX. Was '%s'%s", - argvi, VTY_NEWLINE); - return CMD_WARNING; + return CMD_SUCCESS; } #define LEGACY_STR "This command has no effect, it is kept to support legacy config files\n"
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/bts.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/bts.c
Changed
@@ -1632,12 +1632,12 @@ "Number of SDCCH8 channels total", "", 60, 0 }, BTS_STAT_CHAN_TCH_F_PDCH_USED = \ - { "chan_tch_f_pdch:used", - "Number of TCH/F_PDCH channels used", + { "chan_dynamic_ipaccess:used", + "Number of DYNAMIC/IPACCESS channels used", "", 60, 0 }, BTS_STAT_CHAN_TCH_F_PDCH_TOTAL = \ - { "chan_tch_f_pdch:total", - "Number of TCH/F_PDCH channels total", + { "chan_dynamic_ipaccess:total", + "Number of DYNAMIC/IPACCESS channels total", "", 60, 0 }, BTS_STAT_CHAN_CCCH_SDCCH4_CBCH_USED = \ { "chan_ccch_sdcch4_cbch:used", @@ -1656,12 +1656,12 @@ "Number of SDCCH8+CBCH channels total", "", 60, 0 }, BTS_STAT_CHAN_OSMO_DYN_USED = \ - { "chan_osmo_dyn:used", - "Number of TCH/F_TCH/H_SDCCH8_PDCH channels used", + { "chan_dynamic_osmocom:used", + "Number of DYNAMIC/OSMOCOM channels used", "", 60, 0 }, BTS_STAT_CHAN_OSMO_DYN_TOTAL = \ - { "chan_osmo_dyn:total", - "Number of TCH/F_TCH/H_SDCCH8_PDCH channels total", + { "chan_dynamic_osmocom:total", + "Number of DYNAMIC/OSMOCOM channels total", "", 60, 0 }, BTS_STAT_T3122 = \ { "T3122",
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/codec_pref.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/codec_pref.c
Changed
@@ -335,7 +335,7 @@ * indeed available with the current BTS and MSC configuration */ for (i = 0; i < msc->audio_length; i++) { /* Pick a permitted speech value from the global codec configuration list */ - perm_spch = audio_support_to_gsm88(msc->audio_supporti); + perm_spch = audio_support_to_gsm88(&msc->audio_supporti); /* Determine if the result is a half or full rate codec */ rc = full_rate_from_perm_spch(&full_rate, perm_spch); @@ -406,7 +406,7 @@ for (i = 0; i < msc->audio_length; i++) { /* Pick a permitted speech value from the global codec configuration list */ - perm_spch = audio_support_to_gsm88(msc->audio_supporti); + perm_spch = audio_support_to_gsm88(&msc->audio_supporti); /* Check this permitted speech value against the BTS specific parameters. * if the BTS does not support the codec, try the next one */ @@ -421,8 +421,8 @@ /* AMR (HR/FR version 3) is the only codec that requires a codec * configuration (S0-S15). Determine the current configuration and update * the cfg flag. */ - if (msc->audio_supporti->ver == 3) - scl->codecscl->len.cfg = gen_bss_supported_amr_s15_s0(msc, bts, msc->audio_supporti->hr); + if (msc->audio_supporti.ver == 3) + scl->codecscl->len.cfg = gen_bss_supported_amr_s15_s0(msc, bts, msc->audio_supporti.hr); scl->len++; }
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/gsm_data.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/gsm_data.c
Changed
@@ -184,31 +184,22 @@ { GSM_PCHAN_TCH_H, "TCH/H" }, { GSM_PCHAN_SDCCH8_SACCH8C, "SDCCH8" }, { GSM_PCHAN_PDCH, "PDCH" }, - { GSM_PCHAN_TCH_F_PDCH, "TCH/F_PDCH" }, + { GSM_PCHAN_TCH_F_PDCH, "DYNAMIC/IPACCESS" }, { GSM_PCHAN_UNKNOWN, "UNKNOWN" }, { GSM_PCHAN_CCCH_SDCCH4_CBCH, "CCCH+SDCCH4+CBCH" }, { GSM_PCHAN_SDCCH8_SACCH8C_CBCH, "SDCCH8+CBCH" }, + { GSM_PCHAN_OSMO_DYN, "DYNAMIC/OSMOCOM" }, + /* make get_string_value() return GSM_PCHAN_TCH_F_PDCH for both "DYNAMIC/IPACCESS" and "TCH/F_PDCH" */ + { GSM_PCHAN_TCH_F_PDCH, "TCH/F_PDCH" }, + /* make get_string_value() return GSM_PCHAN_OSMO_DYN for both "DYNAMIC/OSMOCOM" and "TCH/F_TCH/H_SDCCH8_PDCH" */ { GSM_PCHAN_OSMO_DYN, "TCH/F_TCH/H_SDCCH8_PDCH" }, + /* When adding items here, you must also add matching items to gsm_pchant_descs! */ { 0, NULL } }; -const struct value_string gsm_pchan_ids = { - { GSM_PCHAN_NONE, "NONE" }, - { GSM_PCHAN_CCCH, "CCCH" }, - { GSM_PCHAN_CCCH_SDCCH4,"CCCH_SDCCH4" }, - { GSM_PCHAN_TCH_F, "TCH_F" }, - { GSM_PCHAN_TCH_H, "TCH_H" }, - { GSM_PCHAN_SDCCH8_SACCH8C, "SDCCH8" }, - { GSM_PCHAN_PDCH, "PDCH" }, - { GSM_PCHAN_TCH_F_PDCH, "TCH_F_PDCH" }, - { GSM_PCHAN_UNKNOWN, "UNKNOWN" }, - { GSM_PCHAN_CCCH_SDCCH4_CBCH, "CCCH_SDCCH4_CBCH" }, - { GSM_PCHAN_SDCCH8_SACCH8C_CBCH, "SDCCH8_CBCH" }, - { GSM_PCHAN_OSMO_DYN, "OSMO_DYN" }, - { 0, NULL } -}; - -const struct value_string gsm_pchant_descs13 = { +/* VTY command descriptions. These have to be in the same order as gsm_pchant_names, so that the automatic VTY command + * composition in bts_trx_vty_init() works out. */ +const struct value_string gsm_pchant_descs = { { GSM_PCHAN_NONE, "Physical Channel not configured" }, { GSM_PCHAN_CCCH, "FCCH + SCH + BCCH + CCCH (Comb. IV)" }, { GSM_PCHAN_CCCH_SDCCH4, @@ -217,14 +208,24 @@ { GSM_PCHAN_TCH_H, "2 TCH/H + 2 FACCH/H + 2 SACCH (Comb. II)" }, { GSM_PCHAN_SDCCH8_SACCH8C, "8 SDCCH + 4 SACCH (Comb. VII)" }, { GSM_PCHAN_PDCH, "Packet Data Channel for GPRS/EDGE" }, - { GSM_PCHAN_TCH_F_PDCH, "Dynamic TCH/F or GPRS PDCH" }, + { GSM_PCHAN_TCH_F_PDCH, "Dynamic TCH/F or GPRS PDCH" + " (dynamic/ipaccess is an alias for tch/f_pdch)" }, { GSM_PCHAN_UNKNOWN, "Unknown / Unsupported channel combination" }, { GSM_PCHAN_CCCH_SDCCH4_CBCH, "FCCH + SCH + BCCH + CCCH + CBCH + 3 SDCCH + 2 SACCH (Comb. V)" }, { GSM_PCHAN_SDCCH8_SACCH8C_CBCH, "7 SDCCH + 4 SACCH + CBCH (Comb. VII)" }, - { GSM_PCHAN_OSMO_DYN, "Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH" }, + { GSM_PCHAN_OSMO_DYN, "Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH" + " (dynamic/osmocom is an alias for tch/f_tch/h_sdcch8_pdch)" }, + /* These duplicate entries are needed to provide a description for both the DYNAMIC/... aliases and their + * explicit versions 'TCH/F_PDCH' / 'TCH/F_TCH/H_SDCCH8_PDCH', see bts_trx_vty_init() */ + { GSM_PCHAN_TCH_F_PDCH, "Dynamic TCH/F or GPRS PDCH" + " (dynamic/ipaccess is an alias for tch/f_pdch)" }, + { GSM_PCHAN_OSMO_DYN, "Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH" + " (dynamic/osmocom is an alias for tch/f_tch/h_sdcch8_pdch)" }, { 0, NULL } }; +osmo_static_assert(ARRAY_SIZE(gsm_pchant_names) == ARRAY_SIZE(gsm_pchant_descs), _pchan_vty_docs); + const char *gsm_pchan_name(enum gsm_phys_chan_config c) { return get_value_string(gsm_pchant_names, c); @@ -1042,3 +1043,18 @@ return -EINVAL; } } + +int gsm_audio_support_cmp(const struct gsm_audio_support *a, const struct gsm_audio_support *b) +{ + int rc; + if (a == b) + return 0; + if (!a) + return -1; + if (!b) + return 1; + rc = OSMO_CMP(a->hr, b->hr); + if (rc) + return rc; + return OSMO_CMP(a->ver, b->ver); +}
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/lchan_fsm.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/lchan_fsm.c
Changed
@@ -452,11 +452,11 @@ lchan_update_name(lchan); if (!lchan->fi) return; - osmo_fsm_inst_update_id_f(lchan->fi, "%u-%u-%u-%s-%s%u", - lchan->ts->trx->bts->nr, lchan->ts->trx->nr, lchan->ts->nr, - gsm_pchan_id(lchan->ts->pchan_on_init), - lchan->vamos.is_secondary ? "shadow" : "", - lchan->nr - (lchan->vamos.is_secondary ? lchan->ts->max_primary_lchans : 0)); + osmo_fsm_inst_update_id_f_sanitize(lchan->fi, '_', "%u-%u-%u-%s-%s%u", + lchan->ts->trx->bts->nr, lchan->ts->trx->nr, lchan->ts->nr, + gsm_pchan_name(lchan->ts->pchan_on_init), + lchan->vamos.is_secondary ? "shadow" : "", + lchan->nr - (lchan->vamos.is_secondary ? lchan->ts->max_primary_lchans : 0)); if (lchan->fi_rtp) osmo_fsm_inst_update_id_f(lchan->fi_rtp, lchan->fi->id); }
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/osmo_bsc_msc.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/osmo_bsc_msc.c
Changed
@@ -207,7 +207,6 @@ struct bsc_msc_data *osmo_msc_data_alloc(struct gsm_network *net, int nr) { struct bsc_msc_data *msc_data; - unsigned int i; /* check if there is already one */ msc_data = osmo_msc_data_find(net, nr); @@ -251,24 +250,16 @@ /* Allow the full set of possible codecs by default */ msc_data->audio_length = 5; - msc_data->audio_support = - talloc_zero_array(msc_data, struct gsm_audio_support *, - msc_data->audio_length); - for (i = 0; i < msc_data->audio_length; i++) { - msc_data->audio_supporti = - talloc_zero(msc_data->audio_support, - struct gsm_audio_support); - } - msc_data->audio_support0->ver = 1; - msc_data->audio_support0->hr = 0; - msc_data->audio_support1->ver = 1; - msc_data->audio_support1->hr = 1; - msc_data->audio_support2->ver = 2; - msc_data->audio_support2->hr = 0; - msc_data->audio_support3->ver = 3; - msc_data->audio_support3->hr = 0; - msc_data->audio_support4->ver = 3; - msc_data->audio_support4->hr = 1; + msc_data->audio_support0.ver = 1; + msc_data->audio_support0.hr = 0; + msc_data->audio_support1.ver = 1; + msc_data->audio_support1.hr = 1; + msc_data->audio_support2.ver = 2; + msc_data->audio_support2.hr = 0; + msc_data->audio_support3.ver = 3; + msc_data->audio_support3.hr = 0; + msc_data->audio_support4.ver = 3; + msc_data->audio_support4.hr = 1; osmo_fd_setup(&msc_data->mgcp_ipa.ofd, -1, OSMO_FD_READ, &bsc_sccplite_mgcp_proxy_cb, msc_data, 0); msc_data->mgcp_ipa.local_addr = NULL; /* = INADDR(6)_ANY */
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/src/osmo-bsc/timeslot_fsm.c -> osmo-bsc_1.10.0.54.0714.tar.xz/src/osmo-bsc/timeslot_fsm.c
Changed
@@ -49,8 +49,8 @@ static void ts_fsm_update_id(struct gsm_bts_trx_ts *ts) { - osmo_fsm_inst_update_id_f(ts->fi, "%u-%u-%u-%s", ts->trx->bts->nr, ts->trx->nr, ts->nr, - gsm_pchan_id(ts->pchan_on_init)); + osmo_fsm_inst_update_id_f_sanitize(ts->fi, '_', "%u-%u-%u-%s", ts->trx->bts->nr, ts->trx->nr, ts->nr, + gsm_pchan_name(ts->pchan_on_init)); } static __attribute__((constructor)) void ts_fsm_init(void)
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/tests/bsc/bsc_test.c -> osmo-bsc_1.10.0.54.0714.tar.xz/tests/bsc/bsc_test.c
Changed
@@ -29,6 +29,12 @@ #include <osmocom/bsc/osmo_bsc.h> #include <osmocom/bsc/bsc_msc_data.h> +#include <osmocom/bsc/bss.h> +#include <osmocom/bsc/bts.h> +#include <osmocom/bsc/timeslot_fsm.h> +#include <osmocom/bsc/lchan_fsm.h> +#include <osmocom/bsc/assignment_fsm.h> +#include <osmocom/bsc/bsc_subscr_conn_fsm.h> #include <osmocom/gsm/gad.h> #include <osmocom/core/application.h> @@ -180,6 +186,61 @@ bsc_gsmnet = NULL; } +static void test_fsm_ids_with_pchan_names(void) +{ + struct gsm_network *net; + struct gsm_bts *bts; + struct gsm_bts_trx *trx; + struct gsm_bts_trx_ts *ts; + struct gsm_lchan *lchan; + enum gsm_phys_chan_config pchan; + struct gsm_subscriber_connection *conn; + + rate_ctr_init(ctx); + tall_bsc_ctx = ctx; + bsc_network_alloc(); + net = bsc_gsmnet; + + /* Have a BTS so that we have trx, timeslots, lchans that have FSMs to check the id of */ + bts = bsc_bts_alloc_register(net, GSM_BTS_TYPE_UNKNOWN, HARDCODED_BSIC); + trx = gsm_bts_trx_alloc(bts); + + printf("\nTesting FSM ids that contain pchan names\n"); + ts = &trx->ts0; + lchan = &ts->lchan0; + + conn = bsc_subscr_con_allocate(net); + conn->lchan = lchan; + conn->assignment.new_lchan = lchan; + conn->sccp.conn_id = 123; + conn->bsub = bsc_subscr_find_or_create_by_tmsi(net->bsc_subscribers, 0x423, "test"); + gscon_update_id(conn); + + /* dirty dirty hack, to just point at some fi so we can update the id */ + conn->assignment.fi = trx->ts1.fi; + + for (pchan = 0; pchan < _GSM_PCHAN_MAX; pchan++) { + ts->pchan_from_config = pchan; + /* trigger ID update in ts and lchan */ + osmo_fsm_inst_dispatch(ts->fi, TS_EV_OML_READY, NULL); + + if (lchan->fi) + assignment_fsm_update_id(conn); + + printf("pchan=%s:\n ts->fi->id = %s\n lchan->fi->id = %s\n assignment.fi->id = %s\n", + gsm_pchan_name(pchan), + ts->fi->id, + lchan->fi ? lchan->fi->id : "null", + lchan->fi ? conn->assignment.fi->id : "null"); + + osmo_fsm_inst_dispatch(ts->fi, TS_EV_OML_DOWN, NULL); + } + + talloc_free(net); + bsc_gsmnet = NULL; + printf("\n"); +} + static const struct log_info_cat log_categories = { DNM = { .name = "DNM", @@ -216,6 +277,7 @@ osmo_init_logging2(ctx, &log_info); test_scan(); + test_fsm_ids_with_pchan_names(); printf("Testing execution completed.\n"); talloc_free(ctx);
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/tests/bsc/bsc_test.ok -> osmo-bsc_1.10.0.54.0714.tar.xz/tests/bsc/bsc_test.ok
Changed
@@ -1,4 +1,55 @@ Testing BTS<->MSC message scan. Going to test item: 0 Going to test item: 1 + +Testing FSM ids that contain pchan names +pchan=NONE: + ts->fi->id = 0-1-0-NONE + lchan->fi->id = null + assignment.fi->id = null +pchan=CCCH: + ts->fi->id = 0-1-0-CCCH + lchan->fi->id = null + assignment.fi->id = null +pchan=CCCH+SDCCH4: + ts->fi->id = 0-1-0-CCCH_SDCCH4 + lchan->fi->id = 0-1-0-CCCH_SDCCH4-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-CCCH_SDCCH4-0 +pchan=TCH/F: + ts->fi->id = 0-1-0-TCH_F + lchan->fi->id = 0-1-0-TCH_F-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-TCH_F-0 +pchan=TCH/H: + ts->fi->id = 0-1-0-TCH_H + lchan->fi->id = 0-1-0-TCH_H-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-TCH_H-0 +pchan=SDCCH8: + ts->fi->id = 0-1-0-SDCCH8 + lchan->fi->id = 0-1-0-SDCCH8-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-SDCCH8-0 +pchan=PDCH: + ts->fi->id = 0-1-0-PDCH + lchan->fi->id = null + assignment.fi->id = null +pchan=DYNAMIC/IPACCESS: + ts->fi->id = 0-1-0-DYNAMIC_IPACCESS + lchan->fi->id = 0-1-0-DYNAMIC_IPACCESS-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-DYNAMIC_IPACCESSasTCH_F-0 +pchan=UNKNOWN: + ts->fi->id = 0-1-0-UNKNOWN + lchan->fi->id = null + assignment.fi->id = null +pchan=CCCH+SDCCH4+CBCH: + ts->fi->id = 0-1-0-CCCH_SDCCH4_CBCH + lchan->fi->id = 0-1-0-CCCH_SDCCH4_CBCH-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-CCCH_SDCCH4_CBCH-0 +pchan=SDCCH8+CBCH: + ts->fi->id = 0-1-0-SDCCH8_CBCH + lchan->fi->id = 0-1-0-SDCCH8_CBCH-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-SDCCH8_CBCH-0 +pchan=DYNAMIC/OSMOCOM: + ts->fi->id = 0-1-0-DYNAMIC_OSMOCOM + lchan->fi->id = 0-1-0-DYNAMIC_OSMOCOM-0 + assignment.fi->id = msc4294967295-conn123_subscr-TMSI-0x00000423_0-1-0-DYNAMIC_OSMOCOMasNONE-0 + Testing execution completed.
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/tests/codec_pref/codec_pref_test.c -> osmo-bsc_1.10.0.54.0714.tar.xz/tests/codec_pref/codec_pref_test.c
Changed
@@ -30,27 +30,8 @@ void *ctx = NULL; -#define MSC_AUDIO_SUPPORT_MAX 5 #define N_CONFIG_VARIANTS 9 -/* Make sure that there is some memory to put our test configuration. */ -static void init_msc_config(struct bsc_msc_data *msc) -{ - unsigned int i; - - msc->audio_support = talloc_zero_array(ctx, struct gsm_audio_support *, MSC_AUDIO_SUPPORT_MAX); - msc->audio_length = MSC_AUDIO_SUPPORT_MAX; - for (i = 0; i < MSC_AUDIO_SUPPORT_MAX; i++) { - msc->audio_supporti = talloc_zero(msc->audio_support, struct gsm_audio_support); - } -} - -/* Free memory that we have used for the test configuration. */ -static void free_msc_config(struct bsc_msc_data *msc) -{ - talloc_free(msc->audio_support); -} - /* The speech codec list is sent by the MS and lists the voice codec settings * that the MS is able to support. The BSC must select one of this codecs * depending on what the MSC is able to support. The following function @@ -215,74 +196,74 @@ switch (config_no) { case 0: /* FR1 only */ - msc->audio_support0->ver = 1; - msc->audio_support0->hr = 0; + msc->audio_support0.ver = 1; + msc->audio_support0.hr = 0; msc->audio_length = 1; break; case 1: /* HR1 only */ - msc->audio_support0->ver = 1; - msc->audio_support0->hr = 1; + msc->audio_support0.ver = 1; + msc->audio_support0.hr = 1; msc->audio_length = 1; break; case 2: /* FR2 only */ - msc->audio_support0->ver = 2; - msc->audio_support0->hr = 0; + msc->audio_support0.ver = 2; + msc->audio_support0.hr = 0; msc->audio_length = 1; break; case 3: /* FR3 only */ - msc->audio_support0->ver = 3; - msc->audio_support0->hr = 0; + msc->audio_support0.ver = 3; + msc->audio_support0.hr = 0; msc->audio_length = 1; break; case 4: /* HR3 only */ - msc->audio_support0->ver = 3; - msc->audio_support0->hr = 1; + msc->audio_support0.ver = 3; + msc->audio_support0.hr = 1; msc->audio_length = 1; break; case 5: /* FR1 and HR1 */ - msc->audio_support0->ver = 1; - msc->audio_support0->hr = 0; - msc->audio_support1->ver = 1; - msc->audio_support1->hr = 1; + msc->audio_support0.ver = 1; + msc->audio_support0.hr = 0; + msc->audio_support1.ver = 1; + msc->audio_support1.hr = 1; msc->audio_length = 2; break; case 6: /* FR1, FR2 and HR1 */ - msc->audio_support0->ver = 1; - msc->audio_support0->hr = 0; - msc->audio_support1->ver = 2; - msc->audio_support1->hr = 0; - msc->audio_support2->ver = 1; - msc->audio_support2->hr = 1; + msc->audio_support0.ver = 1; + msc->audio_support0.hr = 0; + msc->audio_support1.ver = 2; + msc->audio_support1.hr = 0; + msc->audio_support2.ver = 1; + msc->audio_support2.hr = 1; msc->audio_length = 3; break; case 7: /* FR1, FR3 and HR3 */ - msc->audio_support0->ver = 1; - msc->audio_support0->hr = 0; - msc->audio_support1->ver = 3; - msc->audio_support1->hr = 0; - msc->audio_support2->ver = 3; - msc->audio_support2->hr = 1; + msc->audio_support0.ver = 1; + msc->audio_support0.hr = 0; + msc->audio_support1.ver = 3; + msc->audio_support1.hr = 0; + msc->audio_support2.ver = 3; + msc->audio_support2.hr = 1; msc->audio_length = 3; break; case 8: /* FR1, FR2, FR3, HR1 and HR3 */ - msc->audio_support0->ver = 1; - msc->audio_support0->hr = 0; - msc->audio_support1->ver = 2; - msc->audio_support1->hr = 0; - msc->audio_support2->ver = 3; - msc->audio_support2->hr = 0; - msc->audio_support3->ver = 1; - msc->audio_support3->hr = 1; - msc->audio_support4->ver = 3; - msc->audio_support4->hr = 1; + msc->audio_support0.ver = 1; + msc->audio_support0.hr = 0; + msc->audio_support1.ver = 2; + msc->audio_support1.hr = 0; + msc->audio_support2.ver = 3; + msc->audio_support2.hr = 0; + msc->audio_support3.ver = 1; + msc->audio_support3.hr = 1; + msc->audio_support4.ver = 3; + msc->audio_support4.hr = 1; msc->audio_length = 5; break; } @@ -394,10 +375,10 @@ printf(" * BSS: audio support settings (%u items):\n", msc->audio_length); for (i = 0; i < msc->audio_length; i++) - if (msc->audio_supporti->hr) - printf(" audio_support%u=HR%u\n", i, msc->audio_supporti->ver); + if (msc->audio_supporti.hr) + printf(" audio_support%u=HR%u\n", i, msc->audio_supporti.ver); else - printf(" audio_support%u=FR%u\n", i, msc->audio_supporti->ver); + printf(" audio_support%u=FR%u\n", i, msc->audio_supporti.ver); printf(" * BTS: audio support settings:\n"); printf(" (GSM-FR implicitly supported)\n"); @@ -426,8 +407,6 @@ printf("============== test_one_to_one ==============\n\n"); - init_msc_config(&msc_local); - for (i = 0; i < N_CONFIG_VARIANTS; i++) { make_msc_config(&msc_local, i); make_scl_config(&scl_ms, i); @@ -436,8 +415,6 @@ rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local); OSMO_ASSERT(rc == 0); } - - free_msc_config(&msc_local); } /* Network supports all combinations, MS varies */ @@ -452,8 +429,6 @@ printf("============== test_ms ==============\n\n"); - init_msc_config(&msc_local); - make_msc_config(&msc_local, 8); make_ct_config(&ct_msc, 8); make_bts_config(&bts_local, 8); @@ -462,8 +437,6 @@ rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local); OSMO_ASSERT(rc == 0); } - - free_msc_config(&msc_local); } /* BSS and MS support all combinations, MSC varies */ @@ -478,8 +451,6 @@ printf("============== test_ct ==============\n\n"); - init_msc_config(&msc_local); - make_msc_config(&msc_local, 8); make_scl_config(&scl_ms, 8); make_bts_config(&bts_local, 8); @@ -488,8 +459,6 @@ rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local); OSMO_ASSERT(rc == 0); } - - free_msc_config(&msc_local); } /* MSC and MS support all combinations, BSS varies */ @@ -504,8 +473,6 @@ printf("============== test_msc ==============\n\n"); - init_msc_config(&msc_local); - make_ct_config(&ct_msc, 8); make_scl_config(&scl_ms, 8); make_bts_config(&bts_local, 8); @@ -514,8 +481,6 @@ rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local); OSMO_ASSERT(rc == 0); } - - free_msc_config(&msc_local); } /* Some mixed configurations that are supposed to work */ @@ -529,8 +494,6 @@ printf("============== test_selected_working ==============\n\n"); - init_msc_config(&msc_local); - make_scl_config(&scl_ms, 6); make_ct_config(&ct_msc, 5); make_msc_config(&msc_local, 7); @@ -572,8 +535,6 @@ make_bts_config(&bts_local, 1); rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local); OSMO_ASSERT(rc == 0); - - free_msc_config(&msc_local); } /* Some mixed configurations that can not work */ @@ -587,8 +548,6 @@ printf("============== test_selected_non_working ==============\n\n"); - init_msc_config(&msc_local); - make_scl_config(&scl_ms, 1); make_ct_config(&ct_msc, 5); make_msc_config(&msc_local, 7); @@ -630,8 +589,6 @@ make_bts_config(&bts_local, 7); rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local); OSMO_ASSERT(rc == -1); - - free_msc_config(&msc_local); } /* Try execute bss_supp_codec_list(), display input and output parameters */ @@ -644,10 +601,10 @@ printf(" * BSS: audio support settings (%u items):\n", msc->audio_length); for (i = 0; i < msc->audio_length; i++) - if (msc->audio_supporti->hr) - printf(" audio_support%u=HR%u\n", i, msc->audio_supporti->ver); + if (msc->audio_supporti.hr) + printf(" audio_support%u=HR%u\n", i, msc->audio_supporti.ver); else - printf(" audio_support%u=FR%u\n", i, msc->audio_supporti->ver); + printf(" audio_support%u=FR%u\n", i, msc->audio_supporti.ver); printf(" * BTS: audio support settings:\n"); printf(" (GSM-FR implicitly supported)\n"); @@ -660,7 +617,7 @@ printf(" * result: speech codec list (%u items):\n", scl.len); for (i = 0; i < scl.len; i++) { printf(" codec%u->type=%s", i, gsm0808_speech_codec_type_name(scl.codeci.type)); - if (msc->audio_supporti->ver == 3) + if (msc->audio_supporti.ver == 3) printf(" S15-S0=%04x", scl.codeci.cfg); printf("\n"); } @@ -676,8 +633,6 @@ uint8_t k; printf("============== test_gen_bss_supp_codec_list_cfgs ==============\n\n"); - init_msc_config(&msc_local); - for (i = 0; i < N_CONFIG_VARIANTS; i++) { for (k = 0; k < N_CONFIG_VARIANTS; k++) { make_msc_config(&msc_local, i); @@ -686,8 +641,6 @@ test_gen_bss_supported_codec_list(&msc_local, &bts_local); } } - - free_msc_config(&msc_local); } static const struct log_info_cat log_categories = {
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/tests/ctrl_test_runner.py -> osmo-bsc_1.10.0.54.0714.tar.xz/tests/ctrl_test_runner.py
Changed
@@ -233,8 +233,8 @@ self.assertEqual(r'mtype', 'GET_REPLY') self.assertEqual(r'value', 'CCCH+SDCCH4,0,0 TCH/F,0,0 TCH/H,0,0 SDCCH8,0,0' - + ' TCH/F_PDCH,0,0 CCCH+SDCCH4+CBCH,0,0' - + ' SDCCH8+CBCH,0,0 TCH/F_TCH/H_SDCCH8_PDCH,0,0') + + ' DYNAMIC/IPACCESS,0,0 CCCH+SDCCH4+CBCH,0,0' + + ' SDCCH8+CBCH,0,0 DYNAMIC/OSMOCOM,0,0') def testBtsOmlConnectionState(self): """Check OML state. It will not be connected"""
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/tests/msc.vty -> osmo-bsc_1.10.0.54.0714.tar.xz/tests/msc.vty
Changed
@@ -53,58 +53,58 @@ ... OsmoBSC(config-msc)# codec-list fr1 fr1 +duplicate entry in 'msc' / 'codec-support': fr1 OsmoBSC(config-msc)# show running-config ... msc 0 ... - codec-list fr1 fr1 + codec-list hr1 hr3 fr1 fr2 fr3 ... -OsmoBSC(config-msc)# # ERROR: duplicate entries make no sense OsmoBSC(config-msc)# codec-list fr0 fr1 +'fr0' is not a valid codec version OsmoBSC(config-msc)# show running-config ... msc 0 ... - codec-list fr0 fr1 + codec-list hr1 hr3 fr1 fr2 fr3 ... -OsmoBSC(config-msc)# # ERROR: fr0 should be rejected OsmoBSC(config-msc)# codec-list hr0 hr1 +'hr0' is not a valid codec version OsmoBSC(config-msc)# show running-config ... msc 0 ... - codec-list hr0 hr1 + codec-list hr1 hr3 fr1 fr2 fr3 ... -OsmoBSC(config-msc)# # ERROR: hr0 should be rejected OsmoBSC(config-msc)# codec-list fr8 fr9 +'fr8' is not a valid codec version OsmoBSC(config-msc)# show running-config ... msc 0 ... - codec-list fr8 fr9 + codec-list hr1 hr3 fr1 fr2 fr3 ... -OsmoBSC(config-msc)# # ERROR: fr8 and fr9 should be rejected OsmoBSC(config-msc)# codec-list hr8 hr9 +'hr8' is not a valid codec version OsmoBSC(config-msc)# show running-config ... msc 0 ... - codec-list hr8 hr9 + codec-list hr1 hr3 fr1 fr2 fr3 ... -OsmoBSC(config-msc)# # ERROR: hr8 and hr9 should be rejected OsmoBSC(config-msc)# codec-list fr2 hr2 +'hr2' is not a valid codec version OsmoBSC(config-msc)# show running-config ... msc 0 ... - codec-list fr2 hr2 + codec-list hr1 hr3 fr1 fr2 fr3 ... -OsmoBSC(config-msc)# # TODO: should hr2 be rejected OsmoBSC(config-msc)# codec-list fr1 fr2 fr3 fr4 OsmoBSC(config-msc)# show running-config @@ -114,3 +114,6 @@ codec-list fr1 fr2 fr3 fr4 ... OsmoBSC(config-msc)# # TODO: should fr4 thru fr7 be rejected + +OsmoBSC(config-msc)# codec-list fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 fr1 +Too many items in 'msc' / 'codec-list': 17. There can be at most 16 entries.
View file
osmo-bsc_1.10.0.44.5ea9.tar.xz/tests/timeslot.vty -> osmo-bsc_1.10.0.54.0714.tar.xz/tests/timeslot.vty
Changed
@@ -7,7 +7,7 @@ OsmoBSC(config-net-bts-trx-ts)# list ... - phys_chan_config (none|ccch|ccch+sdcch4|tch/f|tch/h|sdcch8|pdch|tch/f_pdch|unknown|ccch+sdcch4+cbch|sdcch8+cbch|tch/f_tch/h_sdcch8_pdch) + phys_chan_config (none|ccch|ccch+sdcch4|tch/f|tch/h|sdcch8|pdch|dynamic/ipaccess|unknown|ccch+sdcch4+cbch|sdcch8+cbch|dynamic/osmocom|tch/f_pdch|tch/f_tch/h_sdcch8_pdch) training_sequence_code <0-7> hopping enabled (0|1) hopping sequence-number <0-63> @@ -28,11 +28,13 @@ tch/h 2 TCH/H + 2 FACCH/H + 2 SACCH (Comb. II) sdcch8 8 SDCCH + 4 SACCH (Comb. VII) pdch Packet Data Channel for GPRS/EDGE - tch/f_pdch Dynamic TCH/F or GPRS PDCH + dynamic/ipaccess Dynamic TCH/F or GPRS PDCH (dynamic/ipaccess is an alias for tch/f_pdch) unknown Unknown / Unsupported channel combination ccch+sdcch4+cbch FCCH + SCH + BCCH + CCCH + CBCH + 3 SDCCH + 2 SACCH (Comb. V) sdcch8+cbch 7 SDCCH + 4 SACCH + CBCH (Comb. VII) - tch/f_tch/h_sdcch8_pdch Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH + dynamic/osmocom Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH (dynamic/osmocom is an alias for tch/f_tch/h_sdcch8_pdch) + tch/f_pdch Dynamic TCH/F or GPRS PDCH (dynamic/ipaccess is an alias for tch/f_pdch) + tch/f_tch/h_sdcch8_pdch Dynamic TCH/F or TCH/H or SDCCH/8 or GPRS PDCH (dynamic/osmocom is an alias for tch/f_tch/h_sdcch8_pdch) OsmoBSC(config-net-bts-trx-ts)# phys_chan_config none OsmoBSC(config-net-bts-trx-ts)# show running-config @@ -67,5 +69,5 @@ trx 0 ... timeslot 0 - phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH + phys_chan_config DYNAMIC/OSMOCOM ...
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.