laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-hnbgw/+/36479?usp=email )
Change subject: HNBAP: Transmit ErrorIndication in more situations
......................................................................
HNBAP: Transmit ErrorIndication in more situations
Whenever we receive a message and cannot decode the most basic IEs,
or receive an unknown/unsupported procedure code, we should respond
with an ErrorIndication in order to inform the peer.
Change-Id: I7aaa66f83f62ee1b5ba5204248e9f4cc754263ed
---
M src/osmo-hnbgw/hnbgw_hnbap.c
1 file changed, 32 insertions(+), 4 deletions(-)
Approvals:
laforge: 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_hnbap.c b/src/osmo-hnbgw/hnbgw_hnbap.c
index 8615f91..6d3c8e0 100644
--- a/src/osmo-hnbgw/hnbgw_hnbap.c
+++ b/src/osmo-hnbgw/hnbgw_hnbap.c
@@ -434,11 +434,16 @@
static int hnbgw_rx_hnb_deregister(struct hnb_context *ctx, ANY_t *in)
{
HNBAP_HNBDe_RegisterIEs_t ies;
+ HNBAP_Cause_t cause;
int rc;
rc = hnbap_decode_hnbde_registeries(&ies, in);
- if (rc < 0)
- return rc;
+ if (rc < 0) {
+ cause.present = HNBAP_Cause_PR_protocol;
+ cause.choice.radioNetwork = HNBAP_CauseProtocol_unspecified;
+ return hnbgw_tx_error_ind(ctx, &cause, HNBAP_ProcedureCode_id_HNBDe_Register,
HNBAP_Criticality_ignore,
+ HNBAP_TriggeringMessage_initiating_message);
+ }
LOGHNB(ctx, DHNBAP, LOGL_DEBUG, "HNB-DE-REGISTER cause=%s\n",
hnbap_cause_str(&ies.cause));
@@ -641,8 +646,12 @@
uint32_t ctxid;
rc = hnbap_decode_uede_registeries(&ies, in);
- if (rc < 0)
- return rc;
+ if (rc < 0) {
+ cause.present = HNBAP_Cause_PR_protocol;
+ cause.choice.protocol = HNBAP_CauseProtocol_unspecified;
+ return hnbgw_tx_error_ind(ctx, &cause, HNBAP_ProcedureCode_id_UEDe_Register,
+ HNBAP_Criticality_ignore, HNBAP_TriggeringMessage_initiating_message);
+ }
ctxid = asn1bitstr_to_u24(&ies.context_ID);
@@ -681,6 +690,10 @@
static int hnbgw_rx_initiating_msg(struct hnb_context *hnb, HNBAP_InitiatingMessage_t
*imsg)
{
+ HNBAP_Cause_t cause = {
+ .present = HNBAP_Cause_PR_protocol,
+ .choice.protocol = HNBAP_CauseProtocol_unspecified,
+ };
int rc = 0;
switch (imsg->procedureCode) {
@@ -705,9 +718,11 @@
case HNBAP_ProcedureCode_id_U_RNTIQuery: /* 8.12 */
case HNBAP_ProcedureCode_id_privateMessage:
LOGHNB(hnb, DHNBAP, LOGL_NOTICE, "Unimplemented HNBAP Procedure %ld\n",
imsg->procedureCode);
+ rc = hnbgw_tx_error_ind(hnb, &cause, imsg->procedureCode, -1,
HNBAP_TriggeringMessage_initiating_message);
break;
default:
LOGHNB(hnb, DHNBAP, LOGL_NOTICE, "Unknown HNBAP Procedure %ld\n",
imsg->procedureCode);
+ rc = hnbgw_tx_error_ind(hnb, &cause, imsg->procedureCode, -1,
HNBAP_TriggeringMessage_initiating_message);
break;
}
--
To view, visit
https://gerrit.osmocom.org/c/osmo-hnbgw/+/36479?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: I7aaa66f83f62ee1b5ba5204248e9f4cc754263ed
Gerrit-Change-Number: 36479
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged