laforge submitted this change.

View Change


Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
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(-)

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 change 36479. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: I7aaa66f83f62ee1b5ba5204248e9f4cc754263ed
Gerrit-Change-Number: 36479
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge@osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged