aboutsummaryrefslogtreecommitdiffstats
path: root/src/hnbgw_ranap.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2015-09-10 23:49:45 +0200
committerHarald Welte <laforge@gnumonks.org>2015-09-10 23:49:45 +0200
commite2e5d4dd53749549e058335e69014f5b85d8cc7f (patch)
tree71b5f4cbcfdc8582d47ccfbb3337e30da510f3d6 /src/hnbgw_ranap.c
parent350814a5cb1abaf3b4c00efd14fbd4a28a5149db (diff)
Back RUA/RANAP integration until RANAP Reset works for cs+ps
The hNodeB is now actively transmitting and we are getting up to the HNBAP UE-REGISTER.req with the IMSI of the MS.
Diffstat (limited to 'src/hnbgw_ranap.c')
-rw-r--r--src/hnbgw_ranap.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/hnbgw_ranap.c b/src/hnbgw_ranap.c
index 44a920b..bad99c8 100644
--- a/src/hnbgw_ranap.c
+++ b/src/hnbgw_ranap.c
@@ -8,6 +8,7 @@
#include "asn1helpers.h"
#include "hnbgw.h"
+#include "hnbgw_rua.h"
//#include "ranap_common.h"
#include "ranap/RANAP_RANAP-PDU.h"
@@ -177,16 +178,37 @@ int ranap_encode_resetacknowledgeies(
* END auto-generated copy+pasted
***********************************************************************/
-#if 0
+static int ranap_tx_reset_ack(struct hnb_context *hnb,
+ RANAP_CN_DomainIndicator_t domain)
{
- RANAP_ResetAcknowledgeIEs_s ies;
+ RANAP_ResetAcknowledge_t out;
+ RANAP_ResetAcknowledgeIEs_t ies;
+ struct msgb *msg;
+ int rc;
memset(&ies, 0, sizeof(ies));
- ies.cN_DomainIndicator = RANAP_CN_DomainIndicator_cs_domain;
+ ies.cN_DomainIndicator = domain;
+
+ memset(&out, 0, sizeof(out));
+ rc = ranap_encode_resetacknowledgeies(&out, &ies);
+ if (rc < 0) {
+ LOGP(DMAIN, LOGL_ERROR, "error encoding reset ack IEs: %d\n", rc);
+ return rc;
+ }
+
+ msg = ranap_generate_successful_outcome(RANAP_ProcedureCode_id_Reset,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_ResetAcknowledge,
+ &out);
+ if (!msg)
+ return -1;
- rc = ranap_encoderesetacknowledgeise(&ies, FIXME);
+ msg->dst = hnb;
+
+ rc = rua_tx_udt(msg);
+
+ return rc;
}
-#endif
static int ranap_rx_init_reset(struct hnb_context *hnb, ANY_t *in)
{
@@ -199,6 +221,8 @@ static int ranap_rx_init_reset(struct hnb_context *hnb, ANY_t *in)
DEBUGP(DMAIN, "RESET.req\n");
+ ranap_tx_reset_ack(hnb, ies.cN_DomainIndicator);
+
return 0;
}