aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2021-04-29xua_as_fsm: Only delete a route for an IPA AS if we created one earlierHarald Welte1-1/+11
The current code would potentially delete a route that was statically present in the configuration in the following situation: * route exists in config * identical route is attempted to be added at AS-ACTIVE time, but fails * route is unconditionally deleted at AS-DOWN time * user now does 'write file' and has lost a route Let's make sure we only delete the route if we added it previously. Change-Id: I9ad5f7ebe0790e6c186b8ea1b12f204860a00cd2 Related: SYS#5422
2021-04-29osmo_ss7: Truncate route 'mask' to point code bit lengthHarald Welte2-0/+21
Otherwise we run into the problem that a route with mask 0xffffff differs from one with a mask of 0x3fff despite having only 14 bit point code length and them being logically equal. Change-Id: I5d5c828de45724d93a0461bb0dd7858fd8378acd Related: SYS#5422
2021-04-26ipa: Move automatic route add/del from ASP to AS levelHarald Welte2-55/+64
SS7 routes operate on AS level, not ASP level. However, the automatic SS7 route creation/destruction for IPA was implemented at the ASP level. This works for single-connection ASs, but obviously fails in load-share situations: We attempt to add the same route several times, and we delete it at the first ASP disconnect, even while other ASPs still exist. This patch moves the IPA route creation/deletion from the ASP level to the AS level. When the AS becomes active, the route is added; when it goes to DOWN state, it is removed. Change-Id: Idb602beae3e9bc19f7bd96355c02ec8dfd9c5d6c
2021-04-26Don't create duplicate routes in osmo_ss7_route_create()Harald Welte1-0/+9
Let's refuse to create exactly identical routes Change-Id: I520415d4499a4017dfdbdfc3cd67522e1bbd1627 Related: SYS#5422
2021-04-26ipa_asp_fsm: Fix AS lookup from IPA ASPHarald Welte1-4/+5
Contrary to proper SIGTRAN, IPA/SCCPlite cannot support multiple AS within one ASP. When looking up the AS from the ASP, we cannot blindly use routing context 0 to find the AS, as there may very well be multiple IPA AS, and all of those have routing context 0. As a result, the exiting look-up by osmo_ss7_as_find_by_rctx(inst, 0) will return the wrong AS, and we will try to add/delete routes for a completely different AS when ASPs are coming up or going down. Instead, we need to use xua_find_as_for_asp() in order do the look-up: It will resolve the single AS within the ASP. Change-Id: Id295daf84f6ba1cc56cbe1761f874bea329e17ea Cloess: SYS#5422
2021-04-25osmo_ss7: Log route destruction (like we log route creation)Harald Welte1-0/+6
Change-Id: I503cc97db5f907610074cb513299a3a8505e00e5
2021-04-25don't log "SCTP connection close" if an IPA/TCP connection closesHarald Welte1-2/+1
The xua_srv_conn_closed_cb() function is shared/generic. Let's simply write "connection closed" to avoid any confusion. As the ASP name is printed, it should be clear which L4 protocol was used. Change-Id: I506ccc2665a6b0af0fde3961e7e7937af7a81219
2021-04-25ipa_asp_fsm_del_route(): Log what happens if we bail out earlyHarald Welte1-6/+16
Let's inform the user about situations in which we'd want to delete the route for an IPA client, but we run into some problem and bail out early. Change-Id: Ie3f57d22901f169afb2c844476b5839cc36752aa Related: SYS#5422
2021-04-25ipa: Use VTY-configured default network indicatorHarald Welte1-0/+1
When we receive a message from an IPA/SCCPlite connection, we only have SCCP global titles and no underlying M3UA. We since have to introduce a fake M3UA header. While we correctly set the SI, OPC and DPC, we didn't set the NI to what is configured as default for the cs7 instance in the VTY. For international, this problem was hidden by the fact that international is '0' and hence our default memory initialization. Change-Id: I02c618fa0a0aa2a859fcd56397df9637043c8e6e Closes: SYS#5421
2021-03-21Add README.md describing what this repo is aboutHarald Welte1-0/+63
Change-Id: I965dadf1ef4a8340f6995ec745607c28e7bb1f89
2021-02-23Bump version: 1.3.0.51-6858-dirty → 1.4.01.4.0Pau Espin Pedrol6-13/+81
Change-Id: I017147905ffb69829d010f3e8416c8c5d80e7040
2021-02-23stp: generate coredump and exit upon SIGABRT receivedPau Espin Pedrol1-5/+14
Previous code relied on abort() switching sigaction to SIG_FDL + retriggering SIGABRT in case the signal handler returns, which would then generate the coredump + terminate the process. However, if a SIGABRT is received from somewhere else (kill -SIGABRT), then the process would print the talloc report and continue running, which is not desired. Change-Id: Idca8e360968cb6998591737348ce520954e251b2 Fixes: OS#4865
2021-02-23manuals: generate vty reference xml at build timeHarald Welte3-1939/+8
Rremove osmo-stp_vty_reference from the source tree. In manuals/Makefile.am use the new BUILT_REFERENCE_XML feature recently added to osmo-gsm-manuals, and add a build target to generate the XML using the new osmo-stp --vty-ref-xml cmdline switch. Change-Id: I5bcbbdf7b737d2ce36ea877bc78c8cf191a64e1b Depends: I613d692328050a036d05b49a436ab495fc2087ba Related: OS#5041
2021-02-23main: add --vty-ref-mode, use vty_dump_xml_ref_mode()Harald Welte1-5/+40
Change-Id: Ia5abf7457ee7e97ec3fcd5520e5ef82ef808667a Related: OS#5041 Depends: Ie2022a7f9e167e5ceacf15350c037dd43768ff40
2021-02-23Add osmo_ss7_pointcode_print_buf() to APIHarald Welte2-3/+4
Like osmo_ss7_pointcode_print(), but prints into an user-supplied buffer. Change-Id: I5fc7d7746eb90a9d404b6b50bf9ded6789a1c33c
2021-02-19tests: Replace deprecated API log_set_print_filenamePau Espin Pedrol2-2/+2
Change-Id: Id09f903fc5008d074763441a26d71c4fbaf394d8
2021-02-19gitignore: Ignore autofoo *~ churnPau Espin Pedrol1-0/+1
Change-Id: Ia9f01761b595d9b082d78b05d71ff549b8e33d91
2021-02-19tests: Explicitly drop category from logPau Espin Pedrol1-0/+2
Let's disable category here since we don't care about its formatting here. In any case, every test relying on logging output validation should always explicitly state the config to avoid issues in the future if default values change. Change-Id: I899e63ab2702bf25514f6585fb45f5bbf60a9ac9 Related: OS#5034
2021-02-10xua_snm: Implement handling of DUPU messagesHarald Welte8-1/+222
A DUPU message in SUA and M3UA indicates the unavailability of a (MTP-level) user, i.e. the entire SCCP, ISUP, ... is not available. If we receive a DUPU (destination user part unavailable) message in ASP role, then we must * distribute it to any other ASPs for which we operate in SG mode * pass it as MTP-STATUS.ind to SCCP, which can then generates N-PCSTATE.ind to the SCCP User Change-Id: I1559ed0f761a8495b222df48c6bd43798e220471
2021-02-10sccp: more SCMG handling: SSA and SSP message handlingHarald Welte1-2/+31
When a SSP (Subsystem Prohibited) or SSA (Subsystem Available) SCMG message is received, we must generate the respective primitives towards the SCCP user. Change-Id: I149166a25113f5d3e3536f9297bf89ff3139b9e3
2021-02-10sua: per-ssn DUNA/DAVA notificationHarald Welte3-2/+120
Unlike M3UA, in SUA a DUNA/DAVA message can contain not just the point code that became available / unavailable, but it can also include a SSN. In that case, it is just the SSN that became available/unavailable, and not the entire point code. Hence, a N-STATE.ind and not a N-PCSTATE.ind must be delivered to the SCCP user. Change-Id: Ie9a45b905bc17e7b695e15fe12ba4bbadcd032bf
2021-02-08xua: introduce xua_msg_get_u32p() helperHarald Welte2-0/+11
Change-Id: Id7780074b82bc668ae148456750b1a01799decd1
2021-02-08sccp: Add minimalistic SCMG implementationHarald Welte5-1/+166
SCMG (SCCP Management) is a special sub-system that normally resides at SSN=1. In Osmocom we so far ignored its existence. However, in terms of interop with other implementation, we should implement at least some basic features. The only procedure implemented in this initial commit is the response to an incoming SST (Subsystem Test) message. If we don't respond to this message, a remote SCCP entity could assume the SSN is dead on our side, rendering communication impossible. Change-Id: I04b162476f7652ef0540b5ea7299e9447efd1d09
2021-02-08sccp: Notify users of point code available/unavailableHarald Welte6-1/+233
* add N-PCSTATE.ind and N-STATE.ind definitions to SCCP user SAP * add minimal SCMG (SCCP Management) and LBCS (Local Broadcast) * generate MTP-PAUSE.ind/MTP-RESUME.ind based on received xUA DUNA/DAVA * generate N-PCSTATE.ind towards the local SCCP users Change-Id: Idb799f7d7ab329ad12f07b7cbe6336da0891ae92 Related: OS#2623, OS#3403, OS#4701
2021-02-08xua: Implement SNM availability/unavailability messagingHarald Welte6-6/+554
M3UA and SUA have one sub-protocol called [S]SNM, through which the SG informs the ASP about certain destinations (point codes) becoming available (DAVA) or unavailable (DUNA) in the SS7 network. This patch adds support for * generating DAVA/DUAN on a SGP when the AS FSM changes to/from AS-ACTIVE * receiving DAVA/DUNA on an ASP and informing other "SG role" AS/ASP * processing DAUD from ASP received by SG, generating relate DAVA/DUNA responses Related: OS#2623 Change-Id: Id92be4691b0fd77598a6edb642c028bbd8c5b623
2021-02-08SUA: Verify routing context IE of incoming CL and CO messagesHarald Welte1-0/+14
When receiving user-data (connectionless / connection-oriented), we must make sure that there either a) no routing context IE in the message, and only one AS within the ASP, or b) a valid routing context IE for an AS within the ASP This important input validation has been done in M3UA for a long time, but somehow never been implemented on the SUA side so far. Change-Id: Icc232250513009137add3b45fecbb5d2a07c0645
2021-02-08m3ua: Move find_as_for_asp() to shared xua_find_as_for_asp()Harald Welte4-56/+108
This way the function can be re-used by SUA. Change-Id: I0dfc5a7a24dd068002e837dc47eb0778c503cac5
2021-02-08m3ua: re-factor m3ua_rx_xfer(): Externalize AS for ASP lookupHarald Welte1-21/+34
Let's factor-out the lookup of the AS into the separate function find_as_for_asp(). This enables us to reuse this code in upcoming support for SNM messages. Change-Id: If58ea24efe7d54994a7ca2f0a97944bd297a8cc6
2021-02-08Introduce osmo_ss7_asp_get_log_subsys()Harald Welte2-0/+14
This will allow us to write generic code that uses DLM3UA/DSUA depending on the ASP protocol. Change-Id: I7c015b3a2727deff4fc4e6f3bc7bdeeb57e86166
2021-02-08xua_msg: Add xua_msg*_get_str() to obtain string IEHarald Welte2-0/+25
We copy the contents to a static thread-local buffer to ensure zero termination of the string received by a remote entity. Change-Id: I8cbb7aeaf0cb64db0ce01c21e5fca9ab3cd932b6
2021-02-07sccp_sap: Fix string for N-PCSTATE primitiveHarald Welte1-1/+1
Change-Id: Ib42f46661e27b1730badc3647ca2e021e93021b7
2021-02-07osmo_ss7: const-ify input arguments to osmo_ss7_as_has_asp()Harald Welte2-4/+4
Change-Id: Id23d90ffea855680cd7d4a16b89e652eed0cf39f
2021-02-07xua_msg: const-ify input arguments to xua_*_get_u32()Harald Welte2-4/+4
Change-Id: I517943bd11d73195de9418fb1c5d4151dab77873
2021-02-06xua_msg_add_data() Mark input argument as 'const'Harald Welte2-2/+2
We only read from it. Change-Id: I12c17273b9d64a084f59d91fc06ae1512d70855b
2021-02-02xua_test: fix gcc 4 + -std=gnu11 errorOliver Smith1-11/+14
Fix 'error: initializer element is not constant' with debian 8's gcc 4.9.2, triggered by XUA_HDR. Create a new _XUA_HDR without the type cast, and use it inside of const struct definitions in xua_test.c. The new macro is needed, because removing the type cast from the original XUA_HDR would break other uses. Related: OS#5004 Change-Id: I890432ee976043d012b01023f7dd2cfecf79d115
2021-01-28configure.ac: set -std=gnu11Oliver Smith1-0/+2
Change-Id: Iabe929a29a3c7fed2726329215097f7254cf20ca
2021-01-13contrib/jenkins: don't build osmo-gsm-manualsOliver Smith1-1/+0
Related: OS#4912 Change-Id: I511b2e1f4c3a9e0897cff4241ab5df12327de10d
2020-11-11update VTY / copyright messageHarald Welte1-3/+3
* extend year to 2020 * Pau and Vadim have contributed significatnly * fix typo (ot -> to) Change-Id: I5c23e704dd958faf450b2427ff706ac65d4848f4
2020-10-12contrib/jenkins: Enable parallel make in make distcheckPau Espin Pedrol1-2/+2
Change-Id: I667b245e468b9a2bcc5c9a1a04d59a940e71b24c Related: OS#4421
2020-10-06vty: add attributes to VTY commands indicating when they applyPhilipp Maier2-227/+280
Change-Id: If77aea2223891663d465f162614ce8db18168c09 Related: SYS#4937, OS#1601
2020-10-04vty: use install_lib_element() and install_lib_element_ve()Vadim Yanitskiy2-70/+70
See https://lists.osmocom.org/pipermail/openbsc/2020-October/013278.html. Change-Id: I727e27f4d4d9550e34cb0073134a9ed7faae3c66 Depends: I8baf31ace93c536421893c2aa4e3d9d298dcbcc6 Related: SYS#4937
2020-09-23add osmo_sccp_addr_to_id_c()neels/lcsNeels Hofmeyr2-8/+39
Change-Id: Iadd34a167a7712796b2501f6a75b5a8d26a828eb
2020-09-22add osmo_sccp_addr_to_str_c osmo_sccp_inst_addr_to_str_cNeels Hofmeyr2-14/+46
Change-Id: Ia7f9d891ea92abd20855374b936aac8b28ae15df
2020-09-14sccp_helpers: Support printing IPV6 SCCP addressesPau Espin Pedrol1-2/+8
Change-Id: Ibdae89ed251e46814a4af65c6384225575a29039
2020-09-14xua_msg: Get Rid of confusing double network byte order swapPau Espin Pedrol1-1/+1
The ipv4 addr in addr->ip.v4 is already in network byte order, as it's usual in struct in_addr (see sua_addr_parse_part()). So the code in there was simply calling ntohl() because msgb_t16l16vp_put_u32() is calling htonl() on the given parameter before storing it. Let's simply use msgb_t16l16vp_put() directly and avoid a double byte swap which only adds confusion. Change-Id: I70a94ee1b459d56116f0c6a6c7c3b778a939b7ea
2020-09-14sua: Support SUA_IEI_IPv6Pau Espin Pedrol2-2/+8
Change-Id: I5bd69e8400fd2d9251b5d4edd9bf3514e1194b5a
2020-09-05add OSMO_SCCP_ADDR_T_MASK for osmo_sccp_addr_cmp()Neels Hofmeyr2-2/+3
Avoid magic number 0xffffffff and rather provide a mask value for all address components. Change-Id: I13ff0858e496c4392b8e1590d62f7eb80f191a07
2020-09-04Fix default ASP local addr if remote addr contains only IPv4Pau Espin Pedrol1-2/+14
Otherwise it would end up attempting to connect "::" -> "1.2.3.4" which would fail during osmo_sock_init2_multiaddr(). If local address is unset (default), but only IPv4 addresses are set on the remote, then one must use "0.0.0.0" instead. Change-Id: I33faf1291e9105bba2e816c01a6b4854cf13d5e0
2020-09-03enum osmo_sccp_ssn: rename to OSMO_SCCP_SSN_SMLC_BSSAP_LENeels Hofmeyr1-1/+4
Quoting 3GPP TS 23.003 8.2: 1111 1010 BSC (BSSAP-LE); 1111 1011 MSC (BSSAP-LE); 1111 1100 SMLC (BSSAP-LE); Hence the SMLC one should also be named *_BSSAP_LE. I'm certain no other osmocom code is using this SSN yet, but anyway keep a backwards compat shim #define. Change-Id: I3e0c1be0ebbd3883d024174d1e7e9167a8281cfb
2020-09-01Fix (2) change in ss7 server default listen addr, keeps ↵Pau Espin Pedrol1-2/+7
backward-compatibility behavior This patch is a fixup or extension of commit 96d348efbf29888f5ef923251c7d51d45a897c0b, which only fixed the default values for "asp" VTY node, but not for the xua server's "listen" node. As a result, without this patch, by default the SCTP server socket will only listen on IPv4's "0.0.0.0", since NULL is resolved by getaddrinfo to it instead of "::" as first candidate. Fixes: 96d348efbf29888f5ef923251c7d51d45a897c0b Change-Id: Ifbc8df854d1f1e9b07b11911ad5da8cdf9f2080a