AgeCommit message (Collapse)AuthorFilesLines
2017-07-26sccp: ensure addressbook entry names are uniquePhilipp Maier1-0/+10
It is possible to add two (or more) different sccp-addresses under the same name, when the addresses are defined in different cs7 instances. Add a check to make sure an address name is not used multiple times Change-Id: I63227cd87bc24f7d9ac995430b869f0393818335
2017-07-22xua: fix possible memory leak in seems osmo_ss7_asp_use_default_lm()Philipp Maier1-0/+5
The function seems osmo_ss7_asp_use_default_lm() does not guard against an asp->lm_priv FSM instance already existing. If this function is called a second time, it will overwrite asp->lm_priv, causing the original fsm instance to leaked. Check if asp->lm_priv already exists and terminate (free) the FSM if present. Change-Id: I4ad435c042a435c4e641c6e5c53b91265dd23d40
2017-07-22sccp: make simple client configurable via VTYPhilipp Maier3-38/+156
The osmo_sccp_simple_client_on_ss7_id and osmo_sccp_simple_client are not entirely configurable via VTY commands. The relation to the VTY is implicit. The user may set up instance objects via VTY (cs7/ss7, AS, ASP), which are then automatically created on startup. Each cs7 instance gets its own ID via the VTY configuration. When osmo_sccp_simple_client_on_ss7_id() is called with the cs7 instance id. (for osmo_sccp_simple_client() the ID will be hardcoded to 1), the function automatically checks if the CS7 instance is present, if not it will create one automatically using the caller supplied parameters as a defult. If a CS7 instance is present, the function checks for the presence of an AS and an ASP. These objects are present, they will be used. If not, new objects will be created. Both functions must not be called if an SCCP instance is already present. Since there can only be one SCCP instance per CS7 instance, this is an error condition. Add additional logic that checks to detect an already existing, valid configuration. If no or an insufficient configuration is detected, use the caller supplied parameters as default configuration. Change-Id: I293f3526ce6182dca74a169a23449dbc7af57c7c
2017-07-20sccp: global addressbook search + api fixPhilipp Maier2-24/+54
The sccp-addressbook only allows defining addresses for a specific ss7 instance. It is not possible to use an sscp-address, that is defined in the one ss7 instance in another ss7 instance. Add a second global list where all sscp-addresses are added, regardless on which instance they are defined. Fixup the search functions so that they always search the global list. Change the API, so that the address data is written to a destination pointer. This protects the stored address from unintentional changes. Also return the ss7 instance, where the address is associated with. Change-Id: I5acc1e5abc3b3081149a9f476038e4e53d23b763
2017-07-20cosmetic: remove commentPhilipp Maier1-1/+0
The vty command string already says it all, remove the comment entirely. Change-Id: I8ecad584a1bc9b97693b199abd1ec2e5f6ce156d
2017-07-19vty: make addressbook available for _sg and _aspPhilipp Maier1-32/+37
The installation of the vty commands for the sccp addressbook is currently located in osmo_ss7_vty_init_sg(), which is normally only used in signalling gateway applications. An ASP would lack the addressbook functionality. Make SCCP addressbook available for both SG and ASP Change-Id: Ib49ab623055e9ada7f95e0163ba7e33c5f6f99cb
2017-07-10jenkins.sh: Proper error message if local environment isn't set upHarald Welte1-0/+7
Change-Id: I79c2302365824d9c8783dadfa378c8eaa07e2ee7
2017-07-08contrib: Enable -Werror by defaultPau Espin Pedrol2-2/+2
Change-Id: I16a8ca7f0bfabeed6a9b58cda5e60bd58889f74d
2017-07-08sccp_scoc: Fix compilation warning and leave a pragma messagePau Espin Pedrol1-3/+3
Following warning was being printed: warning: statement will never be executed [-Wswitch-unreachable] The code in there seems not to be finished, so better leave the code and a pragma message to get notified when we compile. Change-Id: I4e2c482803954c984cb6792b11b4ea0fe674e269
2017-07-08sccp_scoc: Fix trailing whitespacePau Espin Pedrol1-2/+2
Change-Id: Ia93bb7d59e4e2c31b693e2c3424d34386762d02e
2017-07-08configure.ac: Fix C(PP)FLAGS for BSD buildPau Espin Pedrol1-2/+2
Issue first found in libosmocore. It seems the BSD build doesn't use bash which means using += to append to a variable doesn't work correctly. Change-Id: I33f6b9de4990de0c4d3a6fc0bd7df632094e79ac
2017-07-07vty: Check returncode of osmo_ss7_pointcode_parse()Philipp Maier1-8/+51
The result of osmo_ss7_pointcode_parse() is currently not checked. This means that -EINVAL could end up as value in the pointcode configuration. Check the return code of osmo_ss7_pointcode_parse() and exit the VTY command with CMD_WARNING if the returned pointcode is < 0 Change-Id: Iae6d92b1d135063dfd0a26bc23a89802cb3b1a78
2017-07-05simple-client/server: be able to decide on which ss7 instance to bindPhilipp Maier2-8/+39
osmo_sccp_simple_client() and osmo_sccp_simple_server() are binding on the ss7 instance with the id 1 by default. If the instance does not exist, it is created automatically. Allow choosing the ss7 instance by supplying the id number as function parameter. Add two new functions: osmo_sccp_simple_client_on_ss7_id() osmo_sccp_simple_server_on_ss7_id() Change-Id: I62e608253212415bddbb4c7dcf5d3b5e79c8d28e
2017-06-29sccp_helpers.h: remove duplicate declaration of osmo_sccp_make_addr_pc_ssn()Neels Hofmeyr1-2/+0
Change-Id: Ifbb03de3df3b9bac86fb97dfc8e81e99fc172292
2017-06-29fix compiler warning: xua_test: hexdump pointer typeNeels Hofmeyr1-2/+2
Was recently introduced by a70b4599f63b50c4d654eb9e1b1a099a7c8cdc36. Change-Id: Iab5529f6919fd22902a8b39e8a52079f08deb851
2017-06-27Revert "SCOC: When sending a CORE/CR, SUA SRC_ADDR == CallingPartyAddress"Neels Hofmeyr1-1/+1
This reverts commit 5527df78adc08b76df07c4b682263b5bdd6181d4. I tried some time to figure out what other changes are needed to make this commit work and fix a confusion, until I noticed: The commit's *log message* is correct that SRC == calling, but the *patch* modifies callED addr to be the SRC, which is wrong. So reverting this commit is indeed the correct way to fix our addresses. Change-Id: Ic76aacc81f87f8885fe04121aead5c79a761ef07
2017-06-25sccp_user.c: add missing error loggingNeels Hofmeyr1-4/+12
Change-Id: I98e400e297f8fa83037a8e74a936e4ecc137099c
2017-06-25gen_mtp_transfer_req_xua(): add addr to error log for missing DPCNeels Hofmeyr1-1/+3
Change-Id: Icfd45bcbecc440b94893db2aca537a162f210abd
2017-06-25add/tweak various logging to help figure out complex routingNeels Hofmeyr5-19/+85
Add function osmo_ss7_point_code_print2() to be able to print two point codes in the same log message. Change signatures of two static functions to aid logging: add invalid ref arg to sccp_scoc_rx_inval_src_ref(), pass conn instead of inst to sccp_scoc_rx_inval_opc(). Change-Id: Ia3243606d6cad7721f7da7f6caba2caa90ae2bbd
2017-06-23cosmetic: drop second ';;'Neels Hofmeyr1-1/+1
Change-Id: I861b87e485d94f17e4b4a800c8da865f98633c92
2017-06-23fix sanitize make check: xua_test: initialize gt_out.Neels Hofmeyr2-1/+5
The sanitize build fails because gt_out is not initialized to zero, but is later mem-compared to a zero-initialized struct. Zero-initialize gt_out. Also print in the test output both byte dumps. It helped to figure out the test failure and might as well stay. Change-Id: Ice8ee9c2a6bde4924f3ae6d95aa9268ebef9f070
2017-06-22ss7: Fix compilation error (warning)Philipp Maier1-1/+1
In osmo_ss7_route_create() as is only initalized if lset can not be initalized. If lset can be initalized, as will not be used so everything is fine. However, the compiler complains that as may not be initalized. Initalizing as to NULL solves the problem. Change-Id: Ibcb3ebf9aaa7717cb553242517abce1499bc9c2a
2017-06-22Revert "configure.ac: Use -Werror in C(PP)FLAGS"Neels Hofmeyr1-2/+2
As discussed in chat, -Werror should not be enabled by default. Instead it should be added in our jenkins build scripts. This reverts commit fc252ca38427bf77e55fd272a954dfe24f03a719. Change-Id: I92955c2f74f9a5c40e80028459100cf5e79a537b
2017-06-22sccp: Fix a classic typo of mineHolger Hans Peter Freyther1-7/+7
Change-Id: Ie1194406d9d9c62a513fac35ffa458957809a0e3
2017-06-22configure.ac: Use -Werror in C(PP)FLAGSPau Espin Pedrol1-2/+2
Change-Id: Ia753a3080ef54ac248dacce5cd692fdd38f7649a
2017-06-22configure.ac: Use -Wall in C(PP)FLAGSPau Espin Pedrol1-1/+3
Change-Id: I1e49427b8267bbdb05d0121971a56359dbecd690
2017-06-22xua_test.c: remove useless keyword in struct declarationPau Espin Pedrol1-1/+1
Fixes following warning: warning: useless storage class specifier in empty declaratio Change-Id: I5cea7b6ec2cc755ad8cec69b771f6e3b297e607d
2017-06-22stp_main.c: Add missing headerPau Espin Pedrol1-0/+1
stp_main uses osmo_fsm_vty_add_cmds which is defined in /osmocom/vty/misc.h Fixes 'implicit declaration of function' compilation warning. Change-Id: I3cc9543fcb908eeb172d36fa472a19b01bf52c46
2017-06-22xua_internal.h: Add missing functions required by xua_testPau Espin Pedrol1-0/+5
Change-Id: Ic97de20c567bf67c513a45060e1e96e4b67b2311
2017-06-22sccp_test_vty: Fix compilation warning: Unused variablePau Espin Pedrol1-1/+1
Instead of removing the variable, leave it there with unused attribute set because it is an example and gives extra information to potential readers of the function (it provides you with the actual type of void* _scu). Change-Id: Id5fddf261a7a75ee1d6e9aff0734065ebf8551ab
2017-06-22sccp_scrc: Fix warning: uneeded constant evaulationPau Espin Pedrol1-1/+1
translate function is always present in the same file, thus we can remove this check. Fixes following warning: warning: the address of ‘translate’ will always evaluate as ‘true’ [-Waddress] if (translate && As requested by Harald, leave a comment there stating that there are some checks missing and yet to be implemented. The translate function check was used for this purpose. Change-Id: I48a711f3a43496e2c0c637f34f56784f765938c4
2017-06-21sccp: add addressbook functionality for sccp addressesPhilipp Maier4-0/+587
SCCP addresses are defined through a number of compoinents, not just an IP-Address, there is also point code, ssn and more. To simplify and unify the handling of such objects, this patch introduces an addressbook functionality. The user can set up multiple addresses per ss7 instance and give them names. Later that name can be used to reference the address at a later point in the config. This means that the usage of sccp-addresses from the programmers point of view boils down to a VTY function that reads the string name of a previously defined address. The programmer can then use the API to get a pointer to the SCCP address struct and use it normally. For this feature, two additional VTY nodes are necessary, this commit depends libosmocore change: Change-Id I42aa29c0cccc97f284b85801c5329b015b189640 Change-Id: I068ed7f7d113dab88424a9d47bab7fc703bb7942
2017-06-18cosmetic: Fix typo in sccp_types.hPhilipp Maier1-1/+1
2017-06-18cosmetic: fix typo in osmo_ss7_vty.c VTY docPhilipp Maier1-1/+1
Change-Id: I931ccf6f765d4fe916ea94bde704314561e4537c
2017-05-14stp: Add test scripts for executing m3ua-testtool and sua-testtoolHarald Welte4-0/+123
You will need to have * GNU/Linux with support for [network] namespaces * the 'unshare' command line tool * m3ua-testtool and sua-testtool repositories from git.osmocom.org/nplab installed adjacent to libosmo-sccp * their requirements, i.e. ** guile ** guile-sctp from https://github.com/nplab/guile-sctp When those are installed, you can do things like (cd contrib/test && ./run-in-ns.sh test-m3ua.sh) (cd contrib/test && ./run-in-ns.sh test-sua.sh) to execute the test suite. Change-Id: Ic36eafbb9868b2ec9ae2173f8d1b651b976ccf88
2017-05-04SUA-to-SCCP: Fix use of Called/Calling vs. Src/Dest AddressHarald Welte1-4/+24
SUA uses different semantics (source / destination) address, while SCCP uses Calling/CalledParty. This leads to some confusion. At least in the CR/CORE and CREF/COREF case, the CallingParty equals the SRC_ADDR. Change-Id: I1c641aac7b53c6de7c4e369aaf3004523bd85936
2017-05-04SCOC: When sending a CORE/CR, SUA SRC_ADDR == CallingPartyAddressHarald Welte1-1/+1
SUA uses different semantics (source / destination) address, while SCCP uses Calling/CalledParty. This leads to some confusion. At least in the CR/CORE case, the CallingParty equals the SRC_ADDR. Change-Id: I5a3c27b112148dd539f092cce7618b4f62fde73c
2017-04-27osmo_sccp_addr_parse() Fix point code integer precision handlingHarald Welte1-1/+2
"(cur[1] << 8) & 0x3f" is always 0 regardless of the values of its operands. Change-Id: Ie47e632f4bca490baf4282dc5d55ee55ca7f1ae8 Fixes: coverity CID#166932
2017-04-27osmo_ss7_user_unregister(): Don't dereference NULL userHarald Welte1-1/+2
The 'user' argument to osmo_ss7_user_unregister() can be NULL, so let's make sure we don't dereference it. Change-Id: Ia34b181dcbcb179b2639e2f405364cc952069842 Fixes: coverity CID#166933
2017-04-27sccp_scoc: don't pass variable as argument if we know it's NULLHarald Welte1-1/+1
xua will always be NULL in one particular switch case of scoc_fsm_conn_pend_out(), so let's use NULL directly rather than obscure it though a variable that might be understood as this being non-NULL in some cases. Change-Id: Id6dc56442441489aefc706bcebc49197ca3dae1e Fixes: coverity CID#166934
2017-04-27m3ua_decode_notify(): Ensure status_ie is valid before using itHarald Welte1-0/+4
Change-Id: I3cdd0fbdffcbeeb68dbc979385de045220ea0b0c Fixes: coverity CID#166939
2017-04-27sclc_rx_cldr(): Don't try to dereference user data_ie without checkHarald Welte1-0/+5
While the SUA / SCCP2SUA code is ensuring that mandatory information elements such as the user data IE in a CLD$ message, we might still have current or future callers of sclc_rx_cldr() that don't comply with that. So let's make sure data_ie is valid before dereferencing it. Change-Id: I7c1010b0ac82ee0b7bd5e2c7413899695eae0070 Fixes: coverity CID#166940
2017-04-27m3ua_to_xfer_ind(): don't use data_ie without checking it existsHarald Welte1-1/+1
Change-Id: I5f7551e49c1b4ea417bee3516da1b2ece5ee0699 Fixes: coverity CID#166941
2017-04-27sclc_rx_cldt(): Don't try to dereference user data_ie without checkHarald Welte1-0/+5
While the SUA / SCCP2SUA code is ensuring that mandatory information elements such as the user data IE in a CLDT message, we might still have current or future callers of sclc_rx_cldt() that don't comply with that. So let's make sure data_ie is valid before dereferencing it. Change-Id: Ia102f6c4cd5c6c3f823cb219635c42b9a87765f8 Fixes: coverity CID#166942
2017-04-27ss7_test: Fix '=' that should have been '=='Harald Welte1-1/+1
Change-Id: I1be4529c73992cb342a62aa19ba79be25e982620 Fixes: coverity CID#166944
2017-04-27scu_gen_encode_and_send(): Fix NULL pointer derefHarald Welte1-1/+1
We were using the 'xua' pointer before checkin if it actually is valid Change-Id: I5cd3250afc0b787b78683cd8ab6b2512e0d5c69e Fixes: coverity CID#166945
2017-04-27deliver_to_mtp_user(): Fix null pointer dereferenceHarald Welte1-1/+1
We had used + derefernced the 'prim' pointer before checking its validity. Change-Id: I0ca5026091e91926924b297f9342bda5f9fd38c9 Fixes: coverity CID#166946
2017-04-27osmo_sccp_user_sap_down(): Avoid uninitialized pointer derefHarald Welte1-0/+5
When receiving an unknown primitive, we end up de-referencing an unassigned/uninitialized pointer for 'conn'. Let's properly catch that case and print an error message. Change-Id: Id1f5f293ea9bce8601d45164be670a7062d91802 Fixes: coverity CID#166947
2017-04-27sccp_user: Add missing 'break' statementHarald Welte1-0/+1
The missing break statement leads to an unintended fall-through which in turn prints a wrong ERROR message. Change-Id: I6618fa247b889d4162118278cd05dee85cf21899 Fixes: coverity CID#166948
2017-04-27sccp2sua: Avoid array overruns in sccp_is_{mandatory,optional}()Harald Welte1-2/+2
Change-Id: Ied76c21e20332514c2ad364eea5fc17e24a3f4c6 Fixes: coverity CID#166943, CID#166980