pespin has uploaded this change for review.

View Change

Don't permit anything but HNB (de)registration until HNB is registered

UE registration or other HNBAP procedures should only happen once the
HNB is registered.

Change-Id: Iaa62ce89f4ffbff868309bfb8b1df7ebcca5c44a
---
M src/osmo-hnbgw/hnbgw_hnbap.c
1 file changed, 42 insertions(+), 26 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/34/29334/1
diff --git a/src/osmo-hnbgw/hnbgw_hnbap.c b/src/osmo-hnbgw/hnbgw_hnbap.c
index 1d81e83..aee32a0 100644
--- a/src/osmo-hnbgw/hnbgw_hnbap.c
+++ b/src/osmo-hnbgw/hnbgw_hnbap.c
@@ -535,32 +535,48 @@
{
int rc = 0;

- switch (imsg->procedureCode) {
- case HNBAP_ProcedureCode_id_HNBRegister: /* 8.2 */
- rc = hnbgw_rx_hnb_register_req(hnb, &imsg->value);
- break;
- case HNBAP_ProcedureCode_id_HNBDe_Register: /* 8.3 */
- rc = hnbgw_rx_hnb_deregister(hnb, &imsg->value);
- break;
- case HNBAP_ProcedureCode_id_UERegister: /* 8.4 */
- rc = hnbgw_rx_ue_register_req(hnb, &imsg->value);
- break;
- case HNBAP_ProcedureCode_id_UEDe_Register: /* 8.5 */
- rc = hnbgw_rx_ue_deregister(hnb, &imsg->value);
- break;
- case HNBAP_ProcedureCode_id_ErrorIndication: /* 8.6 */
- rc = hnbgw_rx_err_ind(hnb, &imsg->value);
- break;
- case HNBAP_ProcedureCode_id_TNLUpdate: /* 8.9 */
- case HNBAP_ProcedureCode_id_HNBConfigTransfer: /* 8.10 */
- case HNBAP_ProcedureCode_id_RelocationComplete: /* 8.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);
- break;
- default:
- LOGHNB(hnb, DHNBAP, LOGL_NOTICE, "Unknown HNBAP Procedure %ld\n", imsg->procedureCode);
- break;
+ if (!hnb->hnb_registered) {
+ switch (imsg->procedureCode) {
+ case HNBAP_ProcedureCode_id_HNBRegister: /* 8.2 */
+ rc = hnbgw_rx_hnb_register_req(hnb, &imsg->value);
+ break;
+ case HNBAP_ProcedureCode_id_HNBDe_Register: /* 8.3 */
+ rc = hnbgw_rx_hnb_deregister(hnb, &imsg->value);
+ break;
+ default:
+ LOGHNB(hnb, DHNBAP, LOGL_NOTICE, "HNBAP Procedure %ld not permitted for de-registered HNB\n",
+ imsg->procedureCode);
+ break;
+ }
+ } else {
+ switch (imsg->procedureCode) {
+ case HNBAP_ProcedureCode_id_HNBRegister: /* 8.2 */
+ LOGHNB(hnb, DHNBAP, LOGL_NOTICE,
+ "HNBAP Procedure HNB-Register not permitted for registered HNB\n");
+ break;
+ case HNBAP_ProcedureCode_id_HNBDe_Register: /* 8.3 */
+ rc = hnbgw_rx_hnb_deregister(hnb, &imsg->value);
+ break;
+ case HNBAP_ProcedureCode_id_UERegister: /* 8.4 */
+ rc = hnbgw_rx_ue_register_req(hnb, &imsg->value);
+ break;
+ case HNBAP_ProcedureCode_id_UEDe_Register: /* 8.5 */
+ rc = hnbgw_rx_ue_deregister(hnb, &imsg->value);
+ break;
+ case HNBAP_ProcedureCode_id_ErrorIndication: /* 8.6 */
+ rc = hnbgw_rx_err_ind(hnb, &imsg->value);
+ break;
+ case HNBAP_ProcedureCode_id_TNLUpdate: /* 8.9 */
+ case HNBAP_ProcedureCode_id_HNBConfigTransfer: /* 8.10 */
+ case HNBAP_ProcedureCode_id_RelocationComplete: /* 8.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);
+ break;
+ default:
+ LOGHNB(hnb, DHNBAP, LOGL_NOTICE, "Unknown HNBAP Procedure %ld\n", imsg->procedureCode);
+ break;
+ }
}

return rc;

To view, visit change 29334. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: Iaa62ce89f4ffbff868309bfb8b1df7ebcca5c44a
Gerrit-Change-Number: 29334
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-CC: laforge <laforge@osmocom.org>
Gerrit-MessageType: newchange