AgeCommit message (Collapse)AuthorFilesLines
2021-05-08HACK: Accept DAUD even in ASP rolelaforge/daudHarald Welte1-0/+5
Change-Id: I9835c94c7753baf805ad5a0a6d4e7b657407cf40
2021-05-03ss7_vty: Print actual connected port number in case of IPA serverHarald Welte1-1/+11
In IPA, unlike M3UA/SUA, we often have clients connecting from random/unknown ports. In such cases, the configured remote port is '0'. Let's use getsockname to determine the actual source ip/port of the connected client (if any) during "show ... asp" Change-Id: I1327a46d0b74c572d2ad828a958090af53b9fa37 Closes: SYS#5429
2021-04-30Revert "osmo_ss7: free the sock_name string once an ASP socket is closed"2021q1Harald Welte1-8/+0
This reverts commit 03e3b0423443cd48f901762e36e8aa5b75c27c37. It caused a regression, as apparently some code is using the sock_name string even after the close: DLSS7 osmo_ss7.c:1676 0: asp-asp-dyn-0: xua_srv_conn_cb(): sctp_recvmsg() returned 12 (flags=0x8080) DLSS7 osmo_ss7.c:1608 0: asp-asp-dyn-0: xUA SRV SCTP NOTIFICATION 32773 flags=0x0 DLSS7 osmo_ss7.c:1621 0: asp-asp-dyn-0: xUA SRV SHUTDOWN_EVENT DLSS7 osmo_ss7.c:1875 asp-dyn-0: connection closed DLSS7 osmo_ss7.c:1881 XUA_ASP(asp-dyn-0){ASP_INACTIVE}: Received Event SCTP-COMM_DOWN.ind DLSS7 xua_asp_fsm.c:669 XUA_ASP(asp-dyn-0){ASP_INACTIVE}: state_chg to ASP_DOWN DLSS7 xua_asp_fsm.c:113 0: asp-asp-dyn-0: No Layer Manager, dropping M-ASP_DOWN.indication DLSS7 xua_asp_fsm.c:113 0: asp-asp-dyn-0: No Layer Manager, dropping M-SCTP_RELEASE.indication DLSS7 osmo_ss7.c:1442 0: asp-asp-dyn-0: Destroying ASP DLSS7 osmo_ss7.c:1449 XUA_ASP(asp-dyn-0){ASP_DOWN}: Terminating (cause = OSMO_FSM_TERM_REQUEST) DLSS7 osmo_ss7.c:1449 XUA_ASP(asp-dyn-0){ASP_DOWN}: Freeing instance DLSS7 fsm.c:573 XUA_ASP(asp-dyn-0){ASP_DOWN}: Deallocated ================================================================= ==2928584==ERROR: AddressSanitizer: heap-use-after-free on address 0x618000004d28 at pc 0x7fd6cddeaff8 bp 0x7ffe978fbad0 sp 0x7ffe978fbac8 READ of size 8 at 0x618000004d28 thread T0 #0 0x7fd6cddeaff7 in xua_srv_conn_closed_cb (/space/home/laforge/projects/git/libosmo-sccp/src/.libs/libosmo-sigtran.so.5+0x17bff7) #1 0x7fd6cc443d0f in osmo_stream_srv_destroy (/usr/local/lib/libosmonetif.so.8+0x7ed0f) #2 0x7fd6cdde8ce8 in xua_srv_conn_cb (/space/home/laforge/projects/git/libosmo-sccp/src/.libs/libosmo-sigtran.so.5+0x179ce8) #3 0x7fd6cc44285e in osmo_stream_srv_read (/usr/local/lib/libosmonetif.so.8+0x7d85e) #4 0x7fd6cc44331d in osmo_stream_srv_cb (/usr/local/lib/libosmonetif.so.8+0x7e31d) #5 0x7fd6cd88a1c7 in poll_disp_fds (/usr/local/lib/libosmocore.so.17+0x10d1c7) #6 0x7fd6cd88a30d in _osmo_select_main (/usr/local/lib/libosmocore.so.17+0x10d30d) #7 0x7fd6cd88a32c in osmo_select_main (/usr/local/lib/libosmocore.so.17+0x10d32c) #8 0x557aab05c078 in main /space/home/laforge/projects/git/libosmo-sccp/stp/stp_main.c:267 #9 0x7fd6ccc50d09 in __libc_start_main ../csu/libc-start.c:308 #10 0x557aab05b389 in _start (/space/home/laforge/projects/git/libosmo-sccp/stp/.libs/osmo-stp+0x3389) Change-Id: I72f83114408e7a54d1f3072338fa6f189bf4064f
2021-04-30osmo_ss7: free the sock_name string once an ASP socket is closedHarald Welte1-0/+8
It's confusing to keep around a string representation of what peer the socket was previously connected to. Change-Id: I00d47fc355bfe24915653767ad75c1f491c060d5
2021-04-30don't do explicit NULL checks before calling talloc_free()Harald Welte1-4/+2
Change-Id: I97a072ca32820ad34785ac6a54b00ed51b519305
2021-04-29xua_asp_fsm: Fix IPA client roleHarald Welte1-2/+2
The IPA server worked as expected, but the IPA client has some clear logic bug that prevented it from working. It shows that we never really use any of that IPA/SCCPlite stuff after years in spec-compliant SIGTRAN land. A client now first waits for the IPA_REQ, sends its IPA_RESP, then waits for the ACK, ... Change-Id: Icfc32cad7d65c94dc21754b8f879afcf34d34a92
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: → 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