lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

July 2025

  • 1 participants
  • 1492 discussions
[S] Change in osmo-msc[master]: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages)
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-msc/+/40710?usp=email ) Change subject: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ...................................................................... sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ITU Q.714 2.8: """ When an end node is informed of a routing failure, this information is forwarded towards the SCCP user by using the N-DISCONNECT primitive (refer to reason for release in 2.1.1.2.4/Q.711) or the N-NOTICE primitive (refer to reason for return in 2.2.2.2.4/Q.711) """ We are already handling N-DISCONNECT.ind for CO messages, but N-NOTICE.ind for CL messages was not being handled. If CL messages are not arriving to the RAN peer, then reset the link and mark the peer as disconnected, until a new RESET can successfully fo through. Change-Id: Iddd10c8f97310b600374ff0141ea06e03087da8f Related: OS#5917 --- M src/libmsc/sccp_ran.c 1 file changed, 35 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/10/40710/1 diff --git a/src/libmsc/sccp_ran.c b/src/libmsc/sccp_ran.c index 71d250e..bc3d659 100644 --- a/src/libmsc/sccp_ran.c +++ b/src/libmsc/sccp_ran.c @@ -60,6 +60,36 @@ return sri; } +static void handle_notice_ind(struct sccp_ran_inst *sri, const struct osmo_scu_notice_param *ni) +{ + struct ran_peer *rp; + + rp = ran_peer_find_by_addr(sri, &ni->calling_addr); + if (!rp) { + LOGP(DMSC, LOGL_DEBUG, "(calling_addr=%s) N-NOTICE.ind cause=%u='%s' importance=%u didn't match any ran_peer, ignoring\n", + osmo_sccp_addr_dump(&ni->calling_addr), + ni->cause, osmo_sccp_return_cause_name(ni->cause), + ni->importance); + return; + } + + LOG_RAN_PEER(rp, LOGL_NOTICE, "N-NOTICE.ind cause=%u='%s' importance=%u\n", + ni->cause, osmo_sccp_return_cause_name(ni->cause), + ni->importance); + + switch (ni->cause) { + case SCCP_RETURN_CAUSE_SUBSYSTEM_CONGESTION: + case SCCP_RETURN_CAUSE_NETWORK_CONGESTION: + /* Transient failures (hopefully), keep going. */ + return; + default: + break; + } + + /* Messages are not arriving to ran_peer. Signal it is unavailable to update local state. */ + osmo_fsm_inst_dispatch(rp->fi, RAN_PEER_EV_UNAVAILABLE, NULL); +} + static void handle_pcstate_ind(struct sccp_ran_inst *sri, const struct osmo_scu_pcstate_param *pcst) { struct osmo_ss7_instance *cs7 = osmo_sccp_get_ss7(sri->sccp); @@ -232,6 +262,11 @@ rc = sri->ran->sccp_ran_ops.up_l2(sri, peer_addr, false, 0, oph->msg); break; + case OSMO_PRIM(OSMO_SCU_PRIM_N_NOTICE, PRIM_OP_INDICATION): + handle_notice_ind(sri, &prim->u.notice); + rc = 0; + break; + case OSMO_PRIM(OSMO_SCU_PRIM_N_PCSTATE, PRIM_OP_INDICATION): handle_pcstate_ind(sri, &prim->u.pcstate); rc = 0; -- To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/40710?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Change-Id: Iddd10c8f97310b600374ff0141ea06e03087da8f Gerrit-Change-Number: 40710 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in osmo-bsc[master]: sigtran: Compare sccp_addr using osmo_sccp_addr_ri_cmp()
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/40709?usp=email ) Change subject: sigtran: Compare sccp_addr using osmo_sccp_addr_ri_cmp() ...................................................................... sigtran: Compare sccp_addr using osmo_sccp_addr_ri_cmp() Change-Id: I40db348f40a7e30cc170d1ffaabe95f4a5965d78 --- M src/osmo-bsc/osmo_bsc_sigtran.c 1 file changed, 1 insertion(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/09/40709/1 diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c index 18c9c46..88174cc 100644 --- a/src/osmo-bsc/osmo_bsc_sigtran.c +++ b/src/osmo-bsc/osmo_bsc_sigtran.c @@ -100,7 +100,7 @@ { struct bsc_msc_data *msc; llist_for_each_entry(msc, msc_list, entry) { - if (memcmp(msc_addr, &msc->a.msc_addr, sizeof(*msc_addr)) == 0) + if (osmo_sccp_addr_ri_cmp(msc_addr, &msc->a.msc_addr) == 0) return msc; } LOGP(DMSC, LOGL_ERROR, "Unable to find MSC data under address: %s\n", -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/40709?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I40db348f40a7e30cc170d1ffaabe95f4a5965d78 Gerrit-Change-Number: 40709 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in osmo-bsc[master]: sigtran: Avoid potential uninitialized ptr dereference
by pespin 16 Jul '25

16 Jul '25
Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bsc/+/40704?usp=email to look at the new patch set (#2). The following approvals got outdated and were removed: Verified+1 by Jenkins Builder Change subject: sigtran: Avoid potential uninitialized ptr dereference ...................................................................... sigtran: Avoid potential uninitialized ptr dereference Use osmo_sccp_addr_dump() instead of osmo_sccp_addr_name(), since msc may be uninitialized and hence ss7 may not be available. Change-Id: I682567e88f61c9ec3cfa25c50f2c12fc9d1f6e4f --- M src/osmo-bsc/osmo_bsc_sigtran.c 1 file changed, 2 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/04/40704/2 -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/40704?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newpatchset Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I682567e88f61c9ec3cfa25c50f2c12fc9d1f6e4f Gerrit-Change-Number: 40704 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder
1 0
0 0
[S] Change in osmo-iuh[master]: iu_client: Initial N-NOTICE.ind support (Routing Failure of SCCP CL m...
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-iuh/+/40708?usp=email ) Change subject: iu_client: Initial N-NOTICE.ind support (Routing Failure of SCCP CL messages) ...................................................................... iu_client: Initial N-NOTICE.ind support (Routing Failure of SCCP CL messages) ITU Q.714 2.8: """ When an end node is informed of a routing failure, this information is forwarded towards the SCCP user by using the N-DISCONNECT primitive (refer to reason for release in 2.1.1.2.4/Q.711) or the N-NOTICE primitive (refer to reason for return in 2.2.2.2.4/Q.711) """ We are already handling N-DISCONNECT.ind for CO messages, but N-NOTICE.ind for CL messages was not being handled. If CL messages are not arriving to the peer (rnc), then reset the link and mark the peer as disconnected, until a new RESET can successfully fo through. There's currently no way to submit the indication to upper layers (app). It's not worth changing the API now since anyway sole user of this API (osmo-sgsn) will actually merged the implementation directly and get rid of this layer at some point. Related: OS#5487 Related: OS#3403 Related: OS#5917 Change-Id: Ifc59cdcb9ef910274b0580e9baba2b3a7b5e5354 --- M src/iu_client.c 1 file changed, 44 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-iuh refs/changes/08/40708/1 diff --git a/src/iu_client.c b/src/iu_client.c index 75be457..e1b7af3 100644 --- a/src/iu_client.c +++ b/src/iu_client.c @@ -35,6 +35,7 @@ #include <osmocom/gprs/gprs_msgb.h> #include <osmocom/sigtran/sccp_sap.h> #include <osmocom/sigtran/sccp_helpers.h> +#include <osmocom/sccp/sccp_types.h> #include <osmocom/ranap/ranap_common_cn.h> #include <osmocom/ranap/ranap_ies_defs.h> #include <osmocom/ranap/ranap_msg_factory.h> @@ -1017,6 +1018,44 @@ ranap_iu_free_ue(ue); } +static void handle_notice_ind(struct osmo_ss7_instance *cs7, const struct osmo_scu_notice_param *ni) +{ + struct ranap_iu_rnc *rnc; + + LOGPIU(LOGL_DEBUG, "(calling_addr=%s) N-NOTICE.ind cause=%u='%s' importance=%u\n", + osmo_sccp_addr_dump(&ni->calling_addr), + ni->cause, osmo_sccp_return_cause_name(ni->cause), + ni->importance); + + switch (ni->cause) { + case SCCP_RETURN_CAUSE_SUBSYSTEM_CONGESTION: + case SCCP_RETURN_CAUSE_NETWORK_CONGESTION: + /* Transient failures (hopefully), keep going. */ + return; + default: + break; + } + + /* Messages are not arriving to RNC. Signal to user that all related ue_ctx are invalid. */ + llist_for_each_entry(rnc, &rnc_list, entry) { + struct ranap_ue_conn_ctx *ue_ctx, *ue_ctx_tmp; + if (osmo_sccp_addr_ri_cmp(&rnc->sccp_addr, &ni->calling_addr)) + continue; + LOGPIU(LOGL_NOTICE, + "RNC %s now unreachable: N-NOTICE.ind cause=%u='%s' importance=%u\n", + osmo_rnc_id_name(&rnc->rnc_id), + ni->cause, osmo_sccp_return_cause_name(ni->cause), + ni->importance); + llist_for_each_entry_safe(ue_ctx, ue_ctx_tmp, &ue_conn_ctx_list, list) { + if (ue_ctx->rnc != rnc) + continue; + ue_ctx_link_invalidated_free(ue_ctx); + } + /* TODO: ideally we'd have some event to submit to upper + * layer to inform about peer availability change... */ + } +} + static void handle_pcstate_ind(struct osmo_ss7_instance *cs7, const struct osmo_scu_pcstate_param *pcst) { struct osmo_sccp_addr rem_addr; @@ -1209,6 +1248,11 @@ osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg))); rc = ranap_cn_rx_cl(cn_ranap_handle_cl, prim, msgb_l2(oph->msg), msgb_l2len(oph->msg)); break; + case OSMO_PRIM(OSMO_SCU_PRIM_N_NOTICE, PRIM_OP_INDICATION): + LOGPIU(LOGL_DEBUG, "N-NOTICE.ind(%s)\n", + osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg))); + handle_notice_ind(osmo_sccp_get_ss7(sccp), &prim->u.notice); + break; case OSMO_PRIM(OSMO_SCU_PRIM_N_PCSTATE, PRIM_OP_INDICATION): handle_pcstate_ind(osmo_sccp_get_ss7(sccp), &prim->u.pcstate); break; -- To view, visit https://gerrit.osmocom.org/c/osmo-iuh/+/40708?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-iuh Gerrit-Branch: master Gerrit-Change-Id: Ifc59cdcb9ef910274b0580e9baba2b3a7b5e5354 Gerrit-Change-Number: 40708 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in libosmo-sigtran[master]: sccp_sclc: Remove SCCP cause mask in N-NOTICE.ind 'Reason for return'...
by osmith 16 Jul '25

16 Jul '25
Attention is currently required from: fixeria, laforge, pespin. osmith has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/40702?usp=email ) Change subject: sccp_sclc: Remove SCCP cause mask in N-NOTICE.ind 'Reason for return' field ...................................................................... Patch Set 2: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/40702?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: libosmo-sigtran Gerrit-Branch: master Gerrit-Change-Id: Iccff1e8809769edae36081a79119eb8da901841a Gerrit-Change-Number: 40702 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 16 Jul 2025 15:29:13 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in osmo-hnbgw[master]: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages)
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/40707?usp=email ) Change subject: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ...................................................................... sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ITU Q.714 2.8: """ When an end node is informed of a routing failure, this information is forwarded towards the SCCP user by using the N-DISCONNECT primitive (refer to reason for release in 2.1.1.2.4/Q.711) or the N-NOTICE primitive (refer to reason for return in 2.2.2.2.4/Q.711) """ We are already handling N-DISCONNECT.ind for CO messages, but N-NOTICE.ind for CL messages was not being handled. If CL messages are not arriving to the peer (cnlink), then reset the link and mark the peer as disconnected, until a new RESET can successfully fo through. Related: OS#5917 Change-Id: Ie5f643ba9ac8c443ce95c7f0a89a198fb804c94d --- M include/osmocom/hnbgw/cnlink.h M src/osmo-hnbgw/cnlink.c M src/osmo-hnbgw/hnbgw_sccp.c 3 files changed, 41 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/07/40707/1 diff --git a/include/osmocom/hnbgw/cnlink.h b/include/osmocom/hnbgw/cnlink.h index 1d413a9..5571396 100644 --- a/include/osmocom/hnbgw/cnlink.h +++ b/include/osmocom/hnbgw/cnlink.h @@ -32,6 +32,7 @@ /* SCCP Counters: */ CNLINK_CTR_SCCP_N_UNITDATA_REQ, CNLINK_CTR_SCCP_N_UNITDATA_IND, + CNLINK_CTR_SCCP_N_NOTICE_IND, CNLINK_CTR_SCCP_N_CONNECT_REQ, CNLINK_CTR_SCCP_N_CONNECT_CNF, CNLINK_CTR_SCCP_N_DATA_REQ, diff --git a/src/osmo-hnbgw/cnlink.c b/src/osmo-hnbgw/cnlink.c index 83ca51f..c927c90 100644 --- a/src/osmo-hnbgw/cnlink.c +++ b/src/osmo-hnbgw/cnlink.c @@ -84,6 +84,10 @@ "sccp:n_unit_data:ind", "Received SCCP N-UNITDATA.ind (DL)" }, + [CNLINK_CTR_SCCP_N_NOTICE_IND] = { + "sccp:n_notice:ind", + "Received SCCP N-NOTICE.ind" + }, [CNLINK_CTR_SCCP_N_CONNECT_REQ] = { "sccp:n_connect:req", "Submit SCCP N-CONNECT.req (UL SCCP CR)" diff --git a/src/osmo-hnbgw/hnbgw_sccp.c b/src/osmo-hnbgw/hnbgw_sccp.c index 2020f40..5baef06 100644 --- a/src/osmo-hnbgw/hnbgw_sccp.c +++ b/src/osmo-hnbgw/hnbgw_sccp.c @@ -32,6 +32,7 @@ #include <osmocom/sigtran/sccp_sap.h> #include <osmocom/sigtran/sccp_helpers.h> #include <osmocom/sigtran/protocol/sua.h> +#include <osmocom/sccp/sccp_types.h> #include <osmocom/hnbgw/hnbgw_cn.h> #include <osmocom/hnbgw/context_map.h> @@ -111,6 +112,38 @@ return hnbgw_ranap_rx_udt_dl(cnlink, param, msgb_l2(oph->msg), msgb_l2len(oph->msg)); } +static void handle_notice_ind(struct hnbgw_sccp_user *hsu, + const struct osmo_scu_notice_param *param, + const struct osmo_prim_hdr *oph) +{ + struct hnbgw_cnlink *cnlink; + + cnlink = cnlink_from_addr(hsu, &param->calling_addr, oph); + if (!cnlink) { + LOGP(DCN, LOGL_DEBUG, "(calling_addr=%s) N-NOTICE.ind cause=%u='%s' importance=%u didn't match any cnlink, ignoring\n", + osmo_sccp_addr_dump(&param->calling_addr), + param->cause, osmo_sccp_return_cause_name(param->cause), + param->importance); + return; + } + + LOG_CNLINK(cnlink, DCN, LOGL_NOTICE, "N-NOTICE.ind cause=%u='%s' importance=%u\n", + param->cause, osmo_sccp_return_cause_name(param->cause), + param->importance); + CNLINK_CTR_INC(cnlink, CNLINK_CTR_SCCP_N_NOTICE_IND); + switch (param->cause) { + case SCCP_RETURN_CAUSE_SUBSYSTEM_CONGESTION: + case SCCP_RETURN_CAUSE_NETWORK_CONGESTION: + /* Transient failures (hopefully), keep going. */ + return; + default: + break; + } + + /* Messages are not arriving to destination of cnlink. Kick it back to DISC state. */ + cnlink_set_disconnected(cnlink); +} + static int handle_cn_conn_conf(struct hnbgw_sccp_user *hsu, const struct osmo_scu_connect_param *param, struct osmo_prim_hdr *oph) @@ -318,6 +351,9 @@ case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION): rc = handle_cn_unitdata(hsu, &prim->u.unitdata, oph); break; + case OSMO_PRIM(OSMO_SCU_PRIM_N_NOTICE, PRIM_OP_INDICATION): + handle_notice_ind(hsu, &prim->u.notice, oph); + break; case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_CONFIRM): rc = handle_cn_conn_conf(hsu, &prim->u.connect, oph); break; -- To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/40707?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-hnbgw Gerrit-Branch: master Gerrit-Change-Id: Ie5f643ba9ac8c443ce95c7f0a89a198fb804c94d Gerrit-Change-Number: 40707 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[S] Change in osmo-bsc[master]: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages)
by pespin 16 Jul '25

16 Jul '25
Attention is currently required from: daniel, fixeria, laforge, osmith, pespin. Hello Jenkins Builder, daniel, fixeria, laforge, osmith, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bsc/+/40706?usp=email to look at the new patch set (#2). The following approvals got outdated and were removed: Verified-1 by Jenkins Builder Change subject: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ...................................................................... sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ITU Q.714 2.8: """ When an end node is informed of a routing failure, this information is forwarded towards the SCCP user by using the N-DISCONNECT primitive (refer to reason for release in 2.1.1.2.4/Q.711) or the N-NOTICE primitive (refer to reason for return in 2.2.2.2.4/Q.711) """ We are already handling N-DISCONNECT.ind for CO messages, but N-NOTICE.ind for CL messages was not being handled. If CL messages are not arriving to the peer (MSC), then reset the link and mark the peer as disconnected, until a new RESET can successfully fo through. Related: OS#5917 Change-Id: I3f6c120183a53a80255de71366935b6c07fcfbc8 --- M src/osmo-bsc/osmo_bsc_sigtran.c 1 file changed, 38 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/06/40706/2 -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/40706?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newpatchset Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I3f6c120183a53a80255de71366935b6c07fcfbc8 Gerrit-Change-Number: 40706 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
1 0
0 0
[S] Change in osmo-bsc[master]: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages)
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/40706?usp=email ) Change subject: sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ...................................................................... sccp: Handle N-NOTICE.ind (Routing Failure of SCCP CL messages) ITU Q.714 2.8: """ When an end node is informed of a routing failure, this information is forwarded towards the SCCP user by using the N-DISCONNECT primitive (refer to reason for release in 2.1.1.2.4/Q.711) or the N-NOTICE primitive (refer to reason for return in 2.2.2.2.4/Q.711) """ We are already handling N-DISCONNECT.ind for CO messages, but N-NOTICE.ind for CL messages was not being handled. If CL messages are not arriving to the peer (MSC), then reset the link and mark the peer as disconnected, until a new RESET can successfully fo through. Related: OS#5917 Change-Id: I3f6c120183a53a80255de71366935b6c07fcfbc8 --- M src/osmo-bsc/osmo_bsc_sigtran.c 1 file changed, 38 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/06/40706/1 diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c index 0b48a02..3f97d36 100644 --- a/src/osmo-bsc/osmo_bsc_sigtran.c +++ b/src/osmo-bsc/osmo_bsc_sigtran.c @@ -1,4 +1,4 @@ -/* (C) 2017 by sysmocom s.f.m.c. GmbH, Author: Philipp Maier +/* (C) 2017-2025 by sysmocom s.f.m.c. GmbH, Author: Philipp Maier * (C) 2017-2018 by Harald Welte <laforge(a)gnumonks.org> * All Rights Reserved * @@ -22,6 +22,7 @@ #include <osmocom/core/fsm.h> #include <osmocom/sigtran/osmo_ss7.h> #include <osmocom/sigtran/sccp_sap.h> +#include <osmocom/sccp/sccp_types.h> #include <osmocom/core/linuxlist.h> #include <osmocom/gsm/gsm0808.h> #include <osmocom/gsm/protocol/ipaccess.h> @@ -157,6 +158,37 @@ return rc; } +static int handle_notice_ind(struct osmo_ss7_instance *cs7, const struct osmo_scu_notice_param *ni) +{ + int rc = 0; + struct bsc_msc_data *msc = get_msc_by_addr(&ni->calling_addr); + if (!msc) { + LOGP(DMSC, LOGL_DEBUG, "(calling_addr=%s) N-NOTICE.ind cause=%u='%s' importance=%u didn't match any MSC, ignoring\n", + osmo_sccp_addr_dump(&ni->calling_addr), + ni->cause, osmo_sccp_return_cause_name(ni->cause), + ni->importance); + return rc; + } + + LOG_MSC(msc, LOGL_NOTICE, "(calling_addr=%s) N-NOTICE.ind cause=%u='%s' importance=%u\n", + osmo_sccp_addr_dump(&ni->calling_addr), + ni->cause, osmo_sccp_return_cause_name(ni->cause), + ni->importance); + + switch (ni->cause) { + case SCCP_RETURN_CAUSE_SUBSYSTEM_CONGESTION: + case SCCP_RETURN_CAUSE_NETWORK_CONGESTION: + /* Transient failures (hopefully), keep going. */ + return rc; + default: + /* continue below: */ + } + + /* Messages are not arriving to MSC. Kick the BSSMAP back to DISC state. */ + bssmap_reset_set_disconnected(msc->a.bssmap_reset); + return rc; +} + static int handle_n_connect_from_msc(struct osmo_sccp_user *scu, struct osmo_scu_prim *scu_prim) { struct bsc_msc_data *msc = get_msc_by_addr(&scu_prim->u.connect.calling_addr); @@ -317,6 +349,11 @@ rc = handle_unitdata_from_msc(&scu_prim->u.unitdata.calling_addr, oph->msg, scu); break; + case OSMO_PRIM(OSMO_SCU_PRIM_N_NOTICE, PRIM_OP_INDICATION): + DEBUGP(DMSC, "N-NOTICE.ind(%s)\n", osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg))); + rc = handle_notice_ind(osmo_sccp_get_ss7(sccp), &scu_prim->u.notice); + break; + case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_INDICATION): /* Handle inbound connections */ DEBUGP(DMSC, "N-CONNECT.ind(X->%u)\n", scu_prim->u.connect.conn_id); -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/40706?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I3f6c120183a53a80255de71366935b6c07fcfbc8 Gerrit-Change-Number: 40706 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[S] Change in osmo-bsc[master]: sigtran: Avoid potential uninitialized ptr dereference
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/40704?usp=email ) Change subject: sigtran: Avoid potential uninitialized ptr dereference ...................................................................... sigtran: Avoid potential uninitialized ptr dereference Change-Id: I682567e88f61c9ec3cfa25c50f2c12fc9d1f6e4f --- M src/osmo-bsc/osmo_bsc_sigtran.c 1 file changed, 9 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/04/40704/1 diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c index 42e9a38..450b50e 100644 --- a/src/osmo-bsc/osmo_bsc_sigtran.c +++ b/src/osmo-bsc/osmo_bsc_sigtran.c @@ -97,15 +97,20 @@ /* Find an MSC by its remote SCCP address */ static struct bsc_msc_data *get_msc_by_addr(const struct osmo_sccp_addr *msc_addr) { - struct osmo_ss7_instance *ss7; - struct bsc_msc_data *msc; + struct osmo_ss7_instance *ss7 = NULL; + struct bsc_msc_data *msc = NULL; llist_for_each_entry(msc, msc_list, entry) { if (memcmp(msc_addr, &msc->a.msc_addr, sizeof(*msc_addr)) == 0) return msc; } - ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); - LOGP(DMSC, LOGL_ERROR, "Unable to find MSC data under address: %s\n", osmo_sccp_addr_name(ss7, msc_addr)); + /* Attempt getting an ss7_instance ptr to print sccp_addr: */ + if (msc) + ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); + if (!ss7) + ss7 = osmo_ss7_instance_find(0); + LOGP(DMSC, LOGL_ERROR, "Unable to find MSC data under address: %s\n", + ss7 ? osmo_sccp_addr_name(ss7, msc_addr) : "(no cs7 instance)"); return NULL; } -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/40704?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I682567e88f61c9ec3cfa25c50f2c12fc9d1f6e4f Gerrit-Change-Number: 40704 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
[L] Change in osmo-bsc[master]: Introduce LOG_MSC log macro
by pespin 16 Jul '25

16 Jul '25
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/40705?usp=email ) Change subject: Introduce LOG_MSC log macro ...................................................................... Introduce LOG_MSC log macro Change-Id: I4f2502eea856b31783eef5b0af8dc41ccfeb9910 --- M include/osmocom/bsc/bsc_msc_data.h M src/osmo-bsc/a_reset.c M src/osmo-bsc/bsc_vty.c M src/osmo-bsc/codec_pref.c M src/osmo-bsc/gsm_08_08.c M src/osmo-bsc/osmo_bsc_bssap.c M src/osmo-bsc/osmo_bsc_msc.c M src/osmo-bsc/osmo_bsc_sigtran.c 8 files changed, 128 insertions(+), 124 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/05/40705/1 diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h index ae29725..1968aab 100644 --- a/include/osmocom/bsc/bsc_msc_data.h +++ b/include/osmocom/bsc/bsc_msc_data.h @@ -272,4 +272,10 @@ } } +#define LOG_MSC_CAT(msc, subsys, level, fmt, args...) \ + LOGP(subsys, level, "(msc=%d) " fmt, (msc)->nr, ## args) +#define LOG_MSC(msc, level, fmt, args...) \ + LOG_MSC_CAT(msc, DMSC, level, fmt, ## args) + + #endif diff --git a/src/osmo-bsc/a_reset.c b/src/osmo-bsc/a_reset.c index c2c89e3..64dfa76 100644 --- a/src/osmo-bsc/a_reset.c +++ b/src/osmo-bsc/a_reset.c @@ -42,7 +42,7 @@ static void a_reset_link_up(void *data) { struct bsc_msc_data *msc = data; - LOGP(DMSC, LOGL_NOTICE, "(msc%d) BSSMAP association is up\n", msc->nr); + LOG_MSC(msc, LOGL_NOTICE, "BSSMAP association is up\n"); osmo_stat_item_inc(osmo_stat_item_group_get_item(msc->msc_statg, MSC_STAT_MSC_LINKS_ACTIVE), 1); osmo_stat_item_inc(osmo_stat_item_group_get_item(msc->network->bsc_statg, BSC_STAT_NUM_MSC_CONNECTED), 1); osmo_signal_dispatch(SS_MSC, S_MSC_CONNECTED, msc); @@ -51,7 +51,7 @@ static void a_reset_link_lost(void *data) { struct bsc_msc_data *msc = data; - LOGP(DMSC, LOGL_NOTICE, "(msc%d) BSSMAP association is down\n", msc->nr); + LOG_MSC(msc, LOGL_NOTICE, "BSSMAP association is down\n"); osmo_stat_item_dec(osmo_stat_item_group_get_item(msc->msc_statg, MSC_STAT_MSC_LINKS_ACTIVE), 1); osmo_stat_item_dec(osmo_stat_item_group_get_item(msc->network->bsc_statg, BSC_STAT_NUM_MSC_CONNECTED), 1); osmo_signal_dispatch(SS_MSC, S_MSC_LOST, msc); @@ -74,7 +74,7 @@ /* There must not be any double allocation! */ if (msc->a.bssmap_reset) { - LOGP(DMSC, LOGL_ERROR, "(msc%d) will not allocate a second reset FSM for this MSC\n", msc->nr); + LOG_MSC(msc, LOGL_ERROR, "will not allocate a second reset FSM for this MSC\n"); return; } diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index 52ad6b3..c7a9340 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -1189,8 +1189,8 @@ #define NRI_ARGS_TO_STR_FMT "%s%s%s" #define NRI_ARGS_TO_STR_ARGS(ARGC, ARGV) ARGV[0], (ARGC>1)? ".." : "", (ARGC>1)? ARGV[1] : "" #define NRI_WARN(MSC, FORMAT, args...) do { \ - vty_out(vty, "%% Warning: msc %d: " FORMAT "%s", MSC->nr, ##args, VTY_NEWLINE); \ - LOGP(DMSC, LOGL_ERROR, "msc %d: " FORMAT "\n", MSC->nr, ##args); \ + vty_out(vty, "%% Warning: msc %d: " FORMAT "%s", (MSC)->nr, ##args, VTY_NEWLINE); \ + LOG_MSC(msc, LOGL_ERROR, FORMAT "\n", ##args); \ } while (0) DEFUN_ATTR(cfg_net_nri_bitlen, @@ -3613,7 +3613,7 @@ return CMD_WARNING; } - LOGP(DMSC, LOGL_NOTICE, "(msc%d) VTY requests BSSMAP RESET\n", msc_nr); + LOG_MSC(msc, LOGL_NOTICE, "VTY requests BSSMAP RESET\n"); bssmap_reset_resend_reset(msc->a.bssmap_reset); return CMD_SUCCESS; } diff --git a/src/osmo-bsc/codec_pref.c b/src/osmo-bsc/codec_pref.c index 454b00b..d237093 100644 --- a/src/osmo-bsc/codec_pref.c +++ b/src/osmo-bsc/codec_pref.c @@ -475,9 +475,9 @@ llist_for_each_entry(bts, &msc->network->bts_list, list) { gen_bss_supported_codec_list(&scl, msc, bts); if (scl.len <= 0) { - LOGP(DMSC, LOGL_FATAL, - "codec-support/trx config of BTS %u does not intersect with codec-list of MSC %u\n", - bts->nr, msc->nr); + LOG_MSC(msc, LOGL_FATAL, + "codec-support/trx config of BTS %u does not intersect with codec-list of MSC\n", + bts->nr); rc = -1; } @@ -486,9 +486,9 @@ bts_gsm48_ie = (struct gsm48_multi_rate_conf *)&bts->mr_full.gsm48_ie; rc_rate = calc_amr_rate_intersection(NULL, &msc->amr_conf, bts_gsm48_ie); if (rc_rate < 0) { - LOGP(DMSC, LOGL_FATAL, - "network amr tch-f mode config of BTS %u does not intersect with amr-config of MSC %u\n", - bts->nr, msc->nr); + LOG_MSC(msc, LOGL_FATAL, + "network amr tch-f mode config of BTS %u does not intersect with amr-config of MSC\n", + bts->nr); rc = -1; } } @@ -498,9 +498,9 @@ bts_gsm48_ie = (struct gsm48_multi_rate_conf *)&bts->mr_half.gsm48_ie; rc_rate = calc_amr_rate_intersection(NULL, &msc->amr_conf, bts_gsm48_ie); if (rc_rate < 0) { - LOGP(DMSC, LOGL_FATAL, - "network amr tch-h mode config of BTS %u does not intersect with amr-config of MSC %u\n", - bts->nr, msc->nr); + LOG_MSC(msc, LOGL_FATAL, + "network amr tch-h mode config of BTS %u does not intersect with amr-config of MSC\n", + bts->nr); rc = -1; } } diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c index 692e35c..e44085f 100644 --- a/src/osmo-bsc/gsm_08_08.c +++ b/src/osmo-bsc/gsm_08_08.c @@ -275,8 +275,8 @@ return NULL; } - LOGP(DMSC, LOGL_DEBUG, "New subscriber %s: MSC round-robin selects msc %d\n", - osmo_mobile_identity_to_str_c(OTC_SELECT, mi), msc_target->nr); + LOG_MSC(msc_target, LOGL_DEBUG, "round-robin selected for new subscriber %s\n", + osmo_mobile_identity_to_str_c(OTC_SELECT, mi)); if (is_null_nri) rate_ctr_inc(rate_ctr_group_get_ctr(msc_target->msc_ctrs, MSC_CTR_MSCPOOL_SUBSCR_REATTACH)); diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c index 3c8b194..395fa49 100644 --- a/src/osmo-bsc/osmo_bsc_bssap.c +++ b/src/osmo-bsc/osmo_bsc_bssap.c @@ -69,21 +69,21 @@ rc = osmo_bssap_tlv_parse(&tp, msg->l4h + 1, length - 1); if (rc < 0) - LOGP(DMSC, LOGL_NOTICE, "Failed parsing TLV looking for Osmux support\n"); + LOG_MSC(msc, LOGL_NOTICE, "Failed parsing TLV looking for Osmux support\n"); msc->remote_supports_osmux = !!TLVP_PRESENT(&tp, GSM0808_IE_OSMO_OSMUX_SUPPORT); if (old_value != msc->remote_supports_osmux) - LOGP(DMSC, LOGL_INFO, "MSC detected AoIP Osmux support changed: %d->%d\n", - old_value, msc->remote_supports_osmux); + LOG_MSC(msc, LOGL_INFO, "MSC detected AoIP Osmux support changed: %d->%d\n", + old_value, msc->remote_supports_osmux); } static int bssmap_handle_reset_ack(struct bsc_msc_data *msc, struct msgb *msg, unsigned int length) { - LOGP(DMSC, LOGL_NOTICE, "RESET ACK from MSC: %s\n", - osmo_sccp_addr_name(osmo_ss7_instance_find(msc->a.cs7_instance), - &msc->a.msc_addr)); + LOG_MSC(msc, LOGL_NOTICE, "RESET ACK from MSC: %s\n", + osmo_sccp_addr_name(osmo_ss7_instance_find(msc->a.cs7_instance), + &msc->a.msc_addr)); /* Inform the FSM that controls the RESET/RESET-ACK procedure * that we have successfully received the reset-ack message */ @@ -98,14 +98,14 @@ static int bssmap_handle_reset(struct bsc_msc_data *msc, struct msgb *msg, unsigned int length) { - LOGP(DMSC, LOGL_NOTICE, "RESET from MSC: %s\n", - osmo_sccp_addr_name(osmo_ss7_instance_find(msc->a.cs7_instance), - &msc->a.msc_addr)); + LOG_MSC(msc, LOGL_NOTICE, "RESET from MSC: %s\n", + osmo_sccp_addr_name(osmo_ss7_instance_find(msc->a.cs7_instance), + &msc->a.msc_addr)); update_msc_osmux_support(msc, msg, length); if (!msc->a.bssmap_reset) { - LOGP(DMSC, LOGL_ERROR, "(msc%d) missing RESET FSM\n", msc->nr); + LOG_MSC(msc, LOGL_ERROR, "(msc%d) missing RESET FSM\n", msc->nr); /* Make sure to shut down all open connections, if any */ osmo_bsc_sigtran_reset(msc); return -1; @@ -277,22 +277,22 @@ }; if (osmo_bssap_tlv_parse(&tp, msg->l4h + 1, payload_length - 1) < 0) { - LOGP(DMSC, LOGL_ERROR, "%s(): tlv_parse() failed\n", __func__); + LOG_MSC(msc, LOGL_ERROR, "%s(): tlv_parse() failed\n", __func__); return -1; } remain = payload_length - 1; if (!TLVP_PRESENT(&tp, GSM0808_IE_IMSI)) { - LOGP(DMSC, LOGL_ERROR, "Mandatory IMSI not present.\n"); + LOG_MSC(msc, LOGL_ERROR, "Mandatory IMSI not present.\n"); return -1; } else if ((TLVP_VAL(&tp, GSM0808_IE_IMSI)[0] & GSM_MI_TYPE_MASK) != GSM_MI_TYPE_IMSI) { - LOGP(DMSC, LOGL_ERROR, "Wrong content in the IMSI\n"); + LOG_MSC(msc, LOGL_ERROR, "Wrong content in the IMSI\n"); return -1; } remain -= TLVP_LEN(&tp, GSM0808_IE_IMSI); if (!TLVP_PRESENT(&tp, GSM0808_IE_CELL_IDENTIFIER_LIST)) { - LOGP(DMSC, LOGL_ERROR, "Mandatory CELL IDENTIFIER LIST not present.\n"); + LOG_MSC(msc, LOGL_ERROR, "Mandatory CELL IDENTIFIER LIST not present.\n"); return -1; } @@ -303,7 +303,7 @@ } if (remain <= 0) { - LOGP(DMSC, LOGL_ERROR, "Payload too short.\n"); + LOG_MSC(msc, LOGL_ERROR, "Payload too short.\n"); return -1; } @@ -312,7 +312,7 @@ */ if (osmo_mobile_identity_decode(&paging.imsi, TLVP_VAL(&tp, GSM0808_IE_IMSI), TLVP_LEN(&tp, GSM0808_IE_IMSI), false) || paging.imsi.type != GSM_MI_TYPE_IMSI) { - LOGP(DMSC, LOGL_ERROR, "Paging: could not parse IMSI\n"); + LOG_MSC(msc, LOGL_ERROR, "Paging: could not parse IMSI\n"); return -1; } @@ -749,15 +749,13 @@ struct gsm_subscriber_connection *conn, struct gsm_bts *bts) { int rc, i, nc = 0; - struct bsc_msc_data *msc; + struct bsc_msc_data *msc = conn->sccp.msc; if (!bts) { - LOGP(DMSC, LOGL_ERROR, "No lchan, cannot select codecs\n"); + LOG_MSC(msc, LOGL_ERROR, "No lchan, cannot select codecs\n"); return -EINVAL; } - msc = conn->sccp.msc; - switch (ct->ch_rate_type) { case GSM0808_SPEECH_FULL_BM: rc = match_codec_pref(&req->ch_mode_rate_list[nc], ct, &conn->codec_list, msc, bts, @@ -795,21 +793,21 @@ } if (!nc) { - LOGP(DMSC, LOGL_ERROR, "No supported audio type found for channel_type =" - " { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[%s] }\n", - ct->ch_indctr, ct->ch_rate_type, osmo_hexdump(ct->perm_spch, ct->perm_spch_len)); + LOG_MSC(msc, LOGL_ERROR, "No supported audio type found for channel_type =" + " { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[%s] }\n", + ct->ch_indctr, ct->ch_rate_type, osmo_hexdump(ct->perm_spch, ct->perm_spch_len)); /* TODO: actually output codec names, e.g. implement * gsm0808_permitted_speech_names[] and iterate perm_spch. */ return -EINVAL; } for (i = 0; i < nc; i++ ) { - DEBUGP(DMSC, "Found matching audio type (pref=%d): %s %s for channel_type =" - " { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[ %s] }\n", - i, - req->ch_mode_rate_list[i].chan_rate == CH_RATE_FULL ? "full rate" : "half rate", - get_value_string(gsm48_chan_mode_names, req->ch_mode_rate_list[i].chan_mode), - ct->ch_indctr, ct->ch_rate_type, osmo_hexdump(ct->perm_spch, ct->perm_spch_len)); + LOG_MSC(msc, LOGL_DEBUG, "Found matching audio type (pref=%d): %s %s for channel_type =" + " { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[ %s] }\n", + i, + req->ch_mode_rate_list[i].chan_rate == CH_RATE_FULL ? "full rate" : "half rate", + get_value_string(gsm48_chan_mode_names, req->ch_mode_rate_list[i].chan_mode), + ct->ch_indctr, ct->ch_rate_type, osmo_hexdump(ct->perm_spch, ct->perm_spch_len)); } req->n_ch_mode_rate = nc; @@ -933,10 +931,11 @@ bool *use_osmux, uint8_t *osmux_cid, uint8_t *cause) { int rc; + struct bsc_msc_data *msc = conn->sccp.msc; if (TLVP_PRESENT(tp, GSM0808_IE_OSMO_OSMUX_CID)) { - if (conn->sccp.msc->use_osmux == OSMUX_USAGE_OFF) { - LOGP(DMSC, LOGL_ERROR, "MSC using Osmux but we have it disabled.\n"); + if (msc->use_osmux == OSMUX_USAGE_OFF) { + LOG_MSC(msc, LOGL_ERROR, "MSC using Osmux but we have it disabled.\n"); *cause = GSM0808_CAUSE_INCORRECT_VALUE; return -1; } @@ -945,21 +944,21 @@ TLVP_VAL(tp, GSM0808_IE_OSMO_OSMUX_CID), TLVP_LEN(tp, GSM0808_IE_OSMO_OSMUX_CID)); if (rc < 0) { - LOGP(DMSC, LOGL_ERROR, "Unable to decode Osmux CID.\n"); + LOG_MSC(msc, LOGL_ERROR, "Unable to decode Osmux CID.\n"); *cause = GSM0808_CAUSE_INCORRECT_VALUE; return -1; } return 0; } - if (conn->sccp.msc->use_osmux == OSMUX_USAGE_ONLY) { - LOGP(DMSC, LOGL_ERROR, "MSC not using Osmux but we are forced to use it.\n"); + if (msc->use_osmux == OSMUX_USAGE_ONLY) { + LOG_MSC(msc, LOGL_ERROR, "MSC not using Osmux but we are forced to use it.\n"); *cause = GSM0808_CAUSE_INCORRECT_VALUE; return -1; } - if (conn->sccp.msc->use_osmux == OSMUX_USAGE_ON) - LOGP(DMSC, LOGL_NOTICE, "MSC not using Osmux but we have Osmux enabled.\n"); + if (msc->use_osmux == OSMUX_USAGE_ON) + LOG_MSC(msc, LOGL_NOTICE, "MSC not using Osmux but we have Osmux enabled.\n"); return 0; } @@ -1461,11 +1460,11 @@ struct rate_ctr *ctrs = msc->msc_ctrs->ctr; if (length < 1) { - LOGP(DMSC, LOGL_ERROR, "Not enough room: %d\n", length); + LOG_MSC(msc, LOGL_ERROR, "Not enough room: %d\n", length); return -1; } - LOGP(DMSC, LOGL_INFO, "Rx MSC UDT BSSMAP %s\n", + LOG_MSC(msc, LOGL_INFO, "Rx MSC UDT BSSMAP %s\n", gsm0808_bssmap_name(msg->l4h[0])); switch (msg->l4h[0]) { @@ -1483,7 +1482,7 @@ break; default: rate_ctr_inc(&ctrs[MSC_CTR_BSSMAP_RX_UDT_UNKNOWN]); - LOGP(DMSC, LOGL_NOTICE, "Received unimplemented BSSMAP UDT %s\n", + LOG_MSC(msc, LOGL_NOTICE, "Received unimplemented BSSMAP UDT %s\n", gsm0808_bssmap_name(msg->l4h[0])); break; } @@ -1495,14 +1494,15 @@ struct msgb *msg, unsigned int length) { int ret = 0; - struct rate_ctr *ctrs = conn->sccp.msc->msc_ctrs->ctr; + struct bsc_msc_data *msc = conn->sccp.msc; + struct rate_ctr *ctrs = msc->msc_ctrs->ctr; if (length < 1) { - LOGP(DMSC, LOGL_ERROR, "Not enough room: %d\n", length); + LOG_MSC(msc, LOGL_ERROR, "Not enough room: %d\n", length); return -1; } - LOGP(DMSC, LOGL_INFO, "Rx MSC DT1 BSSMAP %s\n", + LOG_MSC(msc, LOGL_INFO, "Rx MSC DT1 BSSMAP %s\n", gsm0808_bssmap_name(msg->l4h[0])); switch (msg->l4h[0]) { @@ -1553,7 +1553,7 @@ ret = osmo_fsm_inst_dispatch(conn->lcs.loc_req->fi, LCS_LOC_REQ_EV_RX_A_PERFORM_LOCATION_ABORT, msg); } else { - LOGP(DMSC, LOGL_ERROR, "Rx BSSMAP Perform Location Abort without ongoing Location Request\n"); + LOG_MSC(msc, LOGL_ERROR, "Rx BSSMAP Perform Location Abort without ongoing Location Request\n"); ret = 0; } break; @@ -1579,7 +1579,7 @@ break; default: rate_ctr_inc(&ctrs[MSC_CTR_BSSMAP_RX_DT1_UNKNOWN]); - LOGP(DMSC, LOGL_NOTICE, "Unimplemented msg type: %s\n", + LOG_MSC(msc, LOGL_NOTICE, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg->l4h[0])); break; } @@ -1594,6 +1594,7 @@ struct msgb *gsm48; uint8_t *data; int dtap_rc; + struct bsc_msc_data *msc; struct rate_ctr *ctrs; LOGP(DMSC, LOGL_DEBUG, "Rx MSC DTAP: %s\n", @@ -1604,29 +1605,30 @@ return -1; } - ctrs = conn->sccp.msc->msc_ctrs->ctr; + msc = conn->sccp.msc; + ctrs = msc->msc_ctrs->ctr; header = (struct dtap_header *) msg->l3h; if (sizeof(*header) >= length) { rate_ctr_inc(&ctrs[MSC_CTR_BSSMAP_RX_DT1_DTAP_ERROR]); - LOGP(DMSC, LOGL_ERROR, "The DTAP header does not fit. Wanted: %zu got: %u, hex: %s\n", - sizeof(*header), length, osmo_hexdump(msg->l3h, length)); + LOG_MSC(msc, LOGL_ERROR, "The DTAP header does not fit. Wanted: %zu got: %u, hex: %s\n", + sizeof(*header), length, osmo_hexdump(msg->l3h, length)); return -1; } if (header->length > length - sizeof(*header)) { rate_ctr_inc(&ctrs[MSC_CTR_BSSMAP_RX_DT1_DTAP_ERROR]); - LOGP(DMSC, LOGL_ERROR, "The DTAP l4 information does not fit. Wanted: %u got: %zu, hex: %s\n", - header->length, length - sizeof(*header), osmo_hexdump(msg->l3h, length)); + LOG_MSC(msc, LOGL_ERROR, "The DTAP l4 information does not fit. Wanted: %u got: %zu, hex: %s\n", + header->length, length - sizeof(*header), osmo_hexdump(msg->l3h, length)); return -1; } rate_ctr_inc(&ctrs[MSC_CTR_BSSMAP_RX_DT1_DTAP]); - LOGP(DMSC, LOGL_INFO, "Rx MSC DTAP, SAPI: %s CHAN: %u\n", gsm0406_dlci_sapi_name(header->dlci_sapi), header->dlci_cc); + LOG_MSC(msc, LOGL_INFO, "Rx MSC DTAP, SAPI: %s CHAN: %u\n", gsm0406_dlci_sapi_name(header->dlci_sapi), header->dlci_cc); /* forward the data */ gsm48 = gsm48_msgb_alloc_name("GSM 04.08 DTAP RCV"); if (!gsm48) { - LOGP(DMSC, LOGL_ERROR, "Allocation of the message failed.\n"); + LOG_MSC(msc, LOGL_ERROR, "Allocation of the message failed.\n"); return -1; } @@ -1652,11 +1654,11 @@ { struct bssmap_header *bs; - LOGP(DMSC, LOGL_DEBUG, "Rx MSC UDT: %s\n", + LOG_MSC(msc, LOGL_DEBUG, "Rx MSC UDT: %s\n", osmo_hexdump(msgb->l3h, length)); if (length < sizeof(*bs)) { - LOGP(DMSC, LOGL_ERROR, "The header is too short.\n"); + LOG_MSC(msc, LOGL_ERROR, "The header is too short.\n"); return -1; } @@ -1670,7 +1672,7 @@ bssmap_rcvmsg_udt(msc, msgb, length - sizeof(*bs)); break; default: - LOGP(DMSC, LOGL_NOTICE, "Unimplemented msg type: %s\n", + LOG_MSC(msc, LOGL_NOTICE, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(bs->type)); } diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c index 6ce2ded..dd0dde2 100644 --- a/src/osmo-bsc/osmo_bsc_msc.c +++ b/src/osmo-bsc/osmo_bsc_msc.c @@ -384,12 +384,11 @@ msc->mgcp_ipa.local_addr, msc->mgcp_ipa.local_port, NULL, 0, OSMO_SOCK_F_BIND); if (rc < 0) { - LOGP(DMSC, LOGL_ERROR, "msc %u: Could not create/connect/bind MGCP proxy socket: %d\n", - msc->nr, rc); + LOG_MSC(msc, LOGL_ERROR, "Could not create/connect/bind MGCP proxy socket: %d\n", rc); return rc; } - LOGP(DMSC, LOGL_INFO, "msc %u: Socket forwarding IPA-encapsulated MGCP messages towards MGW: %s\n", - msc->nr, osmo_sock_get_name2(msc->mgcp_ipa.ofd.fd)); + LOG_MSC(msc, LOGL_INFO, "Socket forwarding IPA-encapsulated MGCP messages towards MGW: %s\n", + osmo_sock_get_name2(msc->mgcp_ipa.ofd.fd)); return 0; } diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c index 450b50e..0b48a02 100644 --- a/src/osmo-bsc/osmo_bsc_sigtran.c +++ b/src/osmo-bsc/osmo_bsc_sigtran.c @@ -63,7 +63,7 @@ ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); OSMO_ASSERT(ss7); - LOGP(DRESET, LOGL_INFO, "Sending RESET to MSC: %s\n", osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); + LOG_MSC_CAT(msc, DRESET, LOGL_INFO, "Sending RESET to MSC: %s\n", osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); msg = gsm0808_create_reset(); if (msc_is_aoip(msc) && msc->use_osmux != OSMUX_USAGE_OFF) @@ -83,7 +83,7 @@ ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); OSMO_ASSERT(ss7); - LOGP(DRESET, LOGL_NOTICE, "Sending RESET ACK to MSC: %s\n", osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); + LOG_MSC_CAT(msc, DRESET, LOGL_NOTICE, "Sending RESET ACK to MSC: %s\n", osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); msg = gsm0808_create_reset_ack(); if (msc_is_aoip(msc) && msc->use_osmux != OSMUX_USAGE_OFF) @@ -185,9 +185,9 @@ goto refuse; } - LOGP(DMSC, LOGL_DEBUG, "(calling_addr=%s conn_id=%u) N-CONNECT.ind from MSC %d\n", - osmo_sccp_addr_dump(&scu_prim->u.connect.calling_addr), - scu_prim->u.connect.conn_id, msc->nr); + LOG_MSC(msc, LOGL_DEBUG, "(calling_addr=%s conn_id=%u) N-CONNECT.ind\n", + osmo_sccp_addr_dump(&scu_prim->u.connect.calling_addr), + scu_prim->u.connect.conn_id); conn = bsc_subscr_con_allocate(bsc_gsmnet); if (!conn) @@ -195,8 +195,8 @@ conn->sccp.msc = msc; conn->sccp.conn.conn_id = scu_prim->u.connect.conn_id; if (bsc_sccp_inst_register_gscon(bsc_sccp, &conn->sccp.conn) < 0) { - LOGP(DMSC, LOGL_NOTICE, "(calling_addr=%s conn_id=%u) N-CONNECT.ind failed registering conn\n", - osmo_sccp_addr_dump(&scu_prim->u.connect.calling_addr), scu_prim->u.connect.conn_id); + LOG_MSC(msc, LOGL_NOTICE, "(calling_addr=%s conn_id=%u) N-CONNECT.ind failed registering conn\n", + osmo_sccp_addr_dump(&scu_prim->u.connect.calling_addr), scu_prim->u.connect.conn_id); osmo_fsm_inst_term(conn->fi, OSMO_FSM_TERM_REQUEST, NULL); rc = -ENOENT; goto refuse; @@ -281,19 +281,19 @@ } if (disconnected && a_reset_conn_ready(msc)) { - LOGP(DMSC, LOGL_NOTICE, - "(msc%d) now unreachable: N-PCSTATE ind: pc=%u=%s sp_status=%s remote_sccp_status=%s\n", - msc->nr, pcst->affected_pc, osmo_ss7_pointcode_print(cs7, pcst->affected_pc), - osmo_sccp_sp_status_name(pcst->sp_status), - osmo_sccp_rem_sccp_status_name(pcst->remote_sccp_status)); + LOG_MSC(msc, LOGL_NOTICE, + "now unreachable: N-PCSTATE ind: pc=%u=%s sp_status=%s remote_sccp_status=%s\n", + pcst->affected_pc, osmo_ss7_pointcode_print(cs7, pcst->affected_pc), + osmo_sccp_sp_status_name(pcst->sp_status), + osmo_sccp_rem_sccp_status_name(pcst->remote_sccp_status)); /* A previously usable MSC has disconnected. Kick the BSSMAP back to DISC state. */ bssmap_reset_set_disconnected(msc->a.bssmap_reset); } else if (connected && !a_reset_conn_ready(msc)) { - LOGP(DMSC, LOGL_NOTICE, - "(msc%d) now available: N-PCSTATE ind: pc=%u=%s sp_status=%s remote_sccp_status=%s\n", - msc->nr, pcst->affected_pc, osmo_ss7_pointcode_print(cs7, pcst->affected_pc), - osmo_sccp_sp_status_name(pcst->sp_status), - osmo_sccp_rem_sccp_status_name(pcst->remote_sccp_status)); + LOG_MSC(msc, LOGL_NOTICE, + "now available: N-PCSTATE ind: pc=%u=%s sp_status=%s remote_sccp_status=%s\n", + pcst->affected_pc, osmo_ss7_pointcode_print(cs7, pcst->affected_pc), + osmo_sccp_sp_status_name(pcst->sp_status), + osmo_sccp_rem_sccp_status_name(pcst->remote_sccp_status)); /* A previously unusable MSC has become reachable. Trigger immediate BSSMAP RESET -- we would resend a * RESET either way, but we might as well do it now to speed up connecting. */ bssmap_reset_resend_reset(msc->a.bssmap_reset); @@ -400,16 +400,16 @@ ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); OSMO_ASSERT(ss7); - LOGP(DMSC, LOGL_INFO, "Initializing resources for new SCCP connection to MSC %d: %s...\n", - msc->nr, osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); + LOG_MSC(msc, LOGL_INFO, "Initializing resources for new SCCP connection: %s...\n", + osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); if (a_reset_conn_ready(msc) == false) { - LOGP(DMSC, LOGL_ERROR, "MSC %d is not connected. Dropping.\n", msc->nr); + LOG_MSC(msc, LOGL_ERROR, "MSC is not connected. Dropping.\n"); return BSC_CON_REJECT_NO_LINK; } if (bts && !bsc_grace_allow_new_connection(bts->network, bts)) { - LOGP(DMSC, LOGL_NOTICE, "BSC in grace period. No new connections.\n"); + LOG_MSC(msc, LOGL_NOTICE, "BSC in grace period. No new connections.\n"); return BSC_CON_REJECT_RF_GRACE; } @@ -436,25 +436,25 @@ msc = conn->sccp.msc; if (a_reset_conn_ready(msc) == false) { - LOGP(DMSC, LOGL_ERROR, "MSC is not connected. Dropping.\n"); + LOG_MSC(msc, LOGL_ERROR, "MSC is not connected. Dropping.\n"); return -EINVAL; } bsc_sccp = osmo_sccp_get_priv(msc->a.sccp); conn->sccp.conn.conn_id = conn_id = bsc_sccp_inst_next_conn_id(bsc_sccp); if (conn->sccp.conn.conn_id == SCCP_CONN_ID_UNSET) { - LOGP(DMSC, LOGL_ERROR, "Unable to allocate SCCP Connection ID\n"); + LOG_MSC(msc, LOGL_ERROR, "Unable to allocate SCCP Connection ID\n"); return -1; } if (bsc_sccp_inst_register_gscon(bsc_sccp, &conn->sccp.conn) < 0) { - LOGP(DMSC, LOGL_ERROR, "Unable to register SCCP connection (id=%u)\n", conn->sccp.conn.conn_id); + LOG_MSC(msc, LOGL_ERROR, "Unable to register SCCP connection (id=%u)\n", conn->sccp.conn.conn_id); return -1; } - LOGP(DMSC, LOGL_DEBUG, "Allocated new connection id: %u\n", conn->sccp.conn.conn_id); + LOG_MSC(msc, LOGL_DEBUG, "Allocated new connection id: %u\n", conn->sccp.conn.conn_id); ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); OSMO_ASSERT(ss7); - LOGP(DMSC, LOGL_INFO, "Opening new SCCP connection (id=%u) to MSC %d: %s\n", conn_id, - msc->nr, osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); + LOG_MSC(msc, LOGL_INFO, "Opening new SCCP connection (id=%u): %s\n", + conn_id, osmo_sccp_addr_name(ss7, &msc->a.msc_addr)); rc = osmo_sccp_tx_conn_req_msg(msc->a.sccp_user, conn_id, &msc->a.bsc_addr, &msc->a.msc_addr, msg); @@ -489,26 +489,26 @@ switch (msg->data[0]) { case BSSAP_MSG_BSS_MANAGEMENT: rate_ctr_inc(rate_ctr_group_get_ctr(msc->msc_ctrs, MSC_CTR_BSSMAP_TX_BSS_MANAGEMENT)); - LOGP(DMSC, LOGL_INFO, "Tx MSC: BSSMAP: %s\n", + LOG_MSC(msc, LOGL_INFO, "Tx MSC: BSSMAP: %s\n", gsm0808_bssmap_name(msg->data[2])); break; case BSSAP_MSG_DTAP: rate_ctr_inc(rate_ctr_group_get_ctr(msc->msc_ctrs, MSC_CTR_BSSMAP_TX_DTAP)); - LOGP(DMSC, LOGL_INFO, "Tx MSC: DTAP\n"); + LOG_MSC(msc, LOGL_INFO, "Tx MSC: DTAP\n"); break; default: rate_ctr_inc(rate_ctr_group_get_ctr(msc->msc_ctrs, MSC_CTR_BSSMAP_TX_UNKNOWN)); - LOGP(DMSC, LOGL_ERROR, "Tx MSC: unknown message type: 0x%x\n", + LOG_MSC(msc, LOGL_ERROR, "Tx MSC: unknown message type: 0x%x\n", msg->data[0]); } } else { rate_ctr_inc(rate_ctr_group_get_ctr(msc->msc_ctrs, MSC_CTR_BSSMAP_TX_SHORT)); - LOGP(DMSC, LOGL_ERROR, "Tx MSC: message too short: %u\n", msg->len); + LOG_MSC(msc, LOGL_ERROR, "Tx MSC: message too short: %u\n", msg->len); } if (a_reset_conn_ready(msc) == false) { rate_ctr_inc(rate_ctr_group_get_ctr(msc->msc_ctrs, MSC_CTR_BSSMAP_TX_ERR_CONN_NOT_READY)); - LOGP(DMSC, LOGL_ERROR, "MSC is not connected. Dropping.\n"); + LOG_MSC(msc, LOGL_ERROR, "MSC is not connected. Dropping.\n"); msgb_free(msg); return -EINVAL; } @@ -517,8 +517,8 @@ ss7 = osmo_ss7_instance_find(msc->a.cs7_instance); OSMO_ASSERT(ss7); - LOGP(DMSC, LOGL_DEBUG, "Sending connection (id=%i) oriented data to MSC: %s (%s)\n", - conn_id, osmo_sccp_addr_name(ss7, &msc->a.msc_addr), osmo_hexdump(msg->data, msg->len)); + LOG_MSC(msc, LOGL_DEBUG, "Sending connection (id=%d) oriented data to MSC: %s (%s)\n", + conn_id, osmo_sccp_addr_name(ss7, &msc->a.msc_addr), osmo_hexdump(msg->data, msg->len)); rc = osmo_sccp_tx_data_msg(msc->a.sccp_user, conn_id, msg); if (rc >= 0) @@ -584,8 +584,7 @@ if (!msc->a.cs7_instance_valid) { s7i = osmo_ss7_instance_find(0); if (!s7i) { - LOGP(DMSC, LOGL_NOTICE, "To auto-configure msc %d, creating cs7 instance 0 implicitly\n", - msc->nr); + LOG_MSC(msc, LOGL_NOTICE, "To auto-configure msc, creating cs7 instance 0 implicitly\n"); s7i = osmo_ss7_instance_find_or_create(tall_bsc_ctx, 0); OSMO_ASSERT(s7i); } @@ -599,8 +598,8 @@ * default SCCP address for the MSC to the address book */ if (!msc->a.msc_addr_name) { msc->a.msc_addr_name = talloc_strdup(msc, MSC_DEFAULT_ADDR_NAME); - LOGP(DMSC, LOGL_NOTICE, "To auto-configure msc %d, adding address '%s' to cs7 instance 0 address-book implicitly\n", - msc->nr, msc->a.msc_addr_name); + LOG_MSC(msc, LOGL_NOTICE, "To auto-configure msc, adding address '%s' to cs7 instance 0 address-book implicitly\n", + msc->a.msc_addr_name); } if (!msc->a.msc_addr.presence) { struct osmo_ss7_instance *ss7; @@ -729,27 +728,25 @@ OSMO_SCCP_SSN_BSSAP); if (!osmo_sccp_check_addr(&msc->a.bsc_addr, OSMO_SCCP_ADDR_T_SSN | OSMO_SCCP_ADDR_T_PC)) { - LOGP(DMSC, LOGL_ERROR, - "%s %s: invalid local (BSC) SCCP address: %s\n", - inst_name, msc_name, osmo_sccp_inst_addr_name(sccp, &msc->a.bsc_addr)); + LOG_MSC(msc, LOGL_ERROR, "%s: invalid local (BSC) SCCP address: %s\n", + inst_name, osmo_sccp_inst_addr_name(sccp, &msc->a.bsc_addr)); return -EINVAL; } if (!osmo_sccp_check_addr(&msc->a.msc_addr, OSMO_SCCP_ADDR_T_SSN | OSMO_SCCP_ADDR_T_PC)) { - LOGP(DMSC, LOGL_ERROR, - "%s %s: invalid remote (MSC) SCCP address: %s\n", - inst_name, msc_name, osmo_sccp_inst_addr_name(sccp, &msc->a.msc_addr)); + LOG_MSC(msc, LOGL_ERROR, "%s: invalid remote (MSC) SCCP address: %s\n", + inst_name, osmo_sccp_inst_addr_name(sccp, &msc->a.msc_addr)); return -EINVAL; } - LOGP(DMSC, LOGL_NOTICE, "%s %s: local (BSC) SCCP address: %s\n", - inst_name, msc_name, osmo_sccp_inst_addr_name(sccp, &msc->a.bsc_addr)); - LOGP(DMSC, LOGL_NOTICE, "%s %s: remote (MSC) SCCP address: %s\n", - inst_name, msc_name, osmo_sccp_inst_addr_name(sccp, &msc->a.msc_addr)); + LOG_MSC(msc, LOGL_NOTICE, "%s: local (BSC) SCCP address: %s\n", + inst_name, osmo_sccp_inst_addr_name(sccp, &msc->a.bsc_addr)); + LOG_MSC(msc, LOGL_NOTICE, "%s: remote (MSC) SCCP address: %s\n", + inst_name, osmo_sccp_inst_addr_name(sccp, &msc->a.msc_addr)); /* Bind SCCP user. Bind only one user per sccp_instance and bsc_addr. */ msc->a.sccp_user = osmo_sccp_user_find(sccp, msc->a.bsc_addr.ssn, msc->a.bsc_addr.pc); - LOGP(DMSC, LOGL_NOTICE, "%s %s: %s\n", inst_name, msc_name, + LOG_MSC(msc, LOGL_NOTICE, "%s: %s\n", inst_name, msc->a.sccp_user ? "user already bound for this SCCP instance" : "binding SCCP user"); if (!msc->a.sccp_user) msc->a.sccp_user = osmo_sccp_user_bind(sccp, msc_name, sccp_sap_up, msc->a.bsc_addr.ssn); -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/40705?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I4f2502eea856b31783eef5b0af8dc41ccfeb9910 Gerrit-Change-Number: 40705 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de>
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • ...
  • 150
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.