pespin has uploaded this change for review.
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.