hnb-test: Parse UE register accept
diff --git a/src/tests/hnb-test.c b/src/tests/hnb-test.c
index 90b2f38..8610604 100644
--- a/src/tests/hnb-test.c
+++ b/src/tests/hnb-test.c
@@ -106,6 +106,32 @@
return hnb_test_ue_register_tx(hnb);
}
+int hnb_test_rx_ue_register_acc(struct hnb_test *hnb, ANY_t *in)
+{
+ int rc;
+ uint32_t ctx_id;
+ UERegisterAcceptIEs_t accept;
+ char imsi[16];
+
+ rc = hnbap_decode_ueregisteraccepties(&accept, in);
+ if (rc < 0) {
+ return rc;
+ }
+
+ if (accept.uE_Identity.present != UE_Identity_PR_iMSI) {
+ printf("Wrong type in UE register accept\n");
+ return -1;
+ }
+
+ ctx_id = asn1bitstr_to_u24(&accept.context_ID);
+
+ decode_iu_bcd(imsi, sizeof(imsi), accept.uE_Identity.choice.iMSI.buf,
+ accept.uE_Identity.choice.iMSI.size);
+ printf("UE Register accept for IMSI %s, context %u\n", imsi, ctx_id);
+
+ return 0;
+}
+
int hnb_test_hnbap_rx(struct hnb_test *hnb, struct msgb *msg)
{
HNBAP_PDU_t _pdu, *pdu = &_pdu;
@@ -130,6 +156,7 @@
rc = hnb_test_rx_hnb_register_acc(hnb, &pdu->choice.successfulOutcome.value);
break;
case ProcedureCode_id_UERegister:
+ rc = hnb_test_rx_ue_register_acc(hnb, &pdu->choice.successfulOutcome.value);
break;
default:
break;