pespin submitted this 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(-)
diff --git a/src/osmo-hnbgw/hnbgw_hnbap.c b/src/osmo-hnbgw/hnbgw_hnbap.c
index 1d81e83..c10864a 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.