neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/36141?usp=email )
Change subject: improve HNBAP error logging ......................................................................
improve HNBAP error logging
We have a situation where HNBAP is not answered by osmo-hnbgw, and the log is all silent. Add logging to a lot more of the possible HNBAP failure paths to find out what is wrong.
Related: SYS#6810 Change-Id: I17d2809f59087d32e7c11a3ada1d3fadf6f0b660 --- M src/osmo-hnbgw/hnbgw.c M src/osmo-hnbgw/hnbgw_hnbap.c 2 files changed, 33 insertions(+), 4 deletions(-)
Approvals: neels: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/src/osmo-hnbgw/hnbgw.c b/src/osmo-hnbgw/hnbgw.c index 6f74d04..43fcaca 100644 --- a/src/osmo-hnbgw/hnbgw.c +++ b/src/osmo-hnbgw/hnbgw.c @@ -155,8 +155,7 @@ struct ue_context *ue;
ue = talloc_zero(g_hnbgw, struct ue_context); - if (!ue) - return NULL; + OSMO_ASSERT(ue);
ue->hnb = hnb; if (imsi) diff --git a/src/osmo-hnbgw/hnbgw_hnbap.c b/src/osmo-hnbgw/hnbgw_hnbap.c index b220918..f860173 100644 --- a/src/osmo-hnbgw/hnbgw_hnbap.c +++ b/src/osmo-hnbgw/hnbgw_hnbap.c @@ -194,6 +194,9 @@ rc = hnbap_encode_ueregisteraccepties(&accept_out, &accept); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING, &accept.uE_Identity.choice.iMSI); if (rc < 0) { + LOGHNB(ue->hnb, DHNBAP, LOGL_ERROR, + "Failed to encode HNBAP UE Register Accept message for UE IMSI-%s TMSI-0x%08x\n", + ue->imsi, ue->tmsi); return rc; }
@@ -204,7 +207,12 @@
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBAP_UERegisterAccept, &accept_out);
- return hnbgw_hnbap_tx(ue->hnb, msg); + rc = hnbgw_hnbap_tx(ue->hnb, msg); + if (rc) + LOGHNB(ue->hnb, DHNBAP, LOGL_ERROR, + "Failed to enqueue HNBAP UE Register Accept message for UE IMSI-%s TMSI-0x%08x\n", + ue->imsi, ue->tmsi); + return rc; }
static int hnbgw_tx_ue_register_rej(struct hnb_context *hnb, HNBAP_UE_Identity_t *ue_id, const struct HNBAP_Cause *cause) @@ -426,6 +434,7 @@ }
if (rc < 0) { + LOGHNB(hnb, DHNBAP, LOGL_ERROR, "Failed to encode HNBAP UE Register Accept for TMSI 0x%08x\n", tmsi); /* Encoding failed. Nothing in 'accept_out'. */ /* If we allocated the UE context but the UE REGISTER fails, get rid of it again: there will likely * never be a UE DE-REGISTER for this UE from the HNB, and the ue_context would linger forever. */ @@ -441,6 +450,8 @@ &accept_out); rc = hnbgw_hnbap_tx(hnb, msg); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBAP_UERegisterAccept, &accept_out); + if (rc) + LOGHNB(hnb, DHNBAP, LOGL_ERROR, "Failed to transmit HNBAP UE Register Accept for TMSI 0x%08x\n", tmsi); return rc; }
@@ -642,14 +653,19 @@ ue = ue_context_by_imsi(imsi); if (!ue) ue = ue_allocated = ue_context_alloc(ctx, imsi, 0); + else + LOGHNB(ctx, DHNBAP, LOGL_DEBUG, "UE context for IMSI %s already exists\n", imsi);
/* Send UERegisterAccept */ rc = hnbgw_tx_ue_register_acc(ue); if (rc < 0) { + LOGHNB(ctx, DHNBAP, LOGL_ERROR, "Failed to transmit HNBAP UE Register Accept for IMSI %s\n", imsi); /* If we allocated the UE context but the UE REGISTER fails, get rid of it again: there will likely * never be a UE DE-REGISTER for this UE from the HNB, and the ue_context would linger forever. */ - if (ue_allocated) + if (ue_allocated) { ue_context_free(ue_allocated); + LOGHNB(ctx, DHNBAP, LOGL_INFO, "Freed UE context for IMSI %s\n", imsi); + } } free_and_return_rc: hnbap_free_ueregisterrequesties(&ies);