laforge submitted this change.
HNBAP: Use proper cause values during HNB-REGISTER-REQ processing
When we reject the HNB-REGISTER-REQ, let's use an as specific as possible
cause value to let the peer know why we rejected registration.
Change-Id: Iadddd26b751a9fd80c829068792aa93cd538c43d
---
M src/osmo-hnbgw/hnbgw_hnbap.c
1 file changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/osmo-hnbgw/hnbgw_hnbap.c b/src/osmo-hnbgw/hnbgw_hnbap.c
index 32b0904..5cca3cb 100644
--- a/src/osmo-hnbgw/hnbgw_hnbap.c
+++ b/src/osmo-hnbgw/hnbgw_hnbap.c
@@ -49,16 +49,19 @@
return 0;
}
-static int hnbgw_tx_hnb_register_rej(struct hnb_context *ctx)
+static int hnbgw_tx_hnb_register_rej(struct hnb_context *ctx, const HNBAP_Cause_t *cause)
{
HNBAP_HNBRegisterReject_t reject_out;
HNBAP_HNBRegisterRejectIEs_t reject;
struct msgb *msg;
int rc;
- reject.presenceMask = 0,
- reject.cause.present = HNBAP_Cause_PR_radioNetwork;
- reject.cause.choice.radioNetwork = HNBAP_CauseRadioNetwork_unspecified;
+ OSMO_ASSERT(cause);
+
+ LOGHNB(ctx, DHNBAP, LOGL_ERROR, "Rejecting HNB Register Request cause=%s\n", hnbap_cause_str(cause));
+
+ reject.presenceMask = 0;
+ reject.cause = *cause;
/* encode the Information Elements */
memset(&reject_out, 0, sizeof(reject_out));
@@ -414,6 +417,7 @@
char identity_str[256];
const char *cell_id_str;
struct timespec tp;
+ HNBAP_Cause_t cause;
rc = hnbap_decode_hnbregisterrequesties(&ies, in);
if (rc < 0) {
@@ -440,7 +444,9 @@
if (!hnbp) {
LOGHNB(ctx, DHNBAP, LOGL_NOTICE, "Rejecting unknonwn HNB with identity %s\n", identity_str);
hnbap_free_hnbregisterrequesties(&ies);
- return hnbgw_tx_hnb_register_rej(ctx);
+ cause.present = HNBAP_Cause_PR_radioNetwork;
+ cause.choice.radioNetwork = HNBAP_CauseRadioNetwork_unauthorised_HNB;
+ return hnbgw_tx_hnb_register_rej(ctx, &cause);
}
ctx->persistent = hnbp;
hnbp->ctx = ctx;
@@ -480,7 +486,9 @@
* misconfigurations or someone trying to impersonate an already working HNB: */
LOGHNB(ctx, DHNBAP, LOGL_ERROR, "rejecting HNB-REGISTER-REQ with duplicate cell identity %s\n", cell_id_str);
hnbap_free_hnbregisterrequesties(&ies);
- return hnbgw_tx_hnb_register_rej(ctx);
+ cause.present = HNBAP_Cause_PR_radioNetwork;
+ cause.choice.radioNetwork = HNBAP_CauseRadioNetwork_hNB_parameter_mismatch;
+ return hnbgw_tx_hnb_register_rej(ctx, &cause);
}
}
To view, visit change 36475. To unsubscribe, or for help writing mail filters, visit settings.