aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2015-12-16 17:31:43 +0100
committerHarald Welte <laforge@gnumonks.org>2015-12-16 17:31:43 +0100
commit08d5da664740432b6933220b094787da9ca90ab8 (patch)
tree755e2a0edee8b9ea32ef32b548c3792ee775b56e /src
parent49695572ba3c55c012c9b1a55d13cfca18f4ebbf (diff)
hnbgw: Use the now-compiling RANAP encoder+decoder code
So far, we copy-pasted/cherry-picked individual encoder/decoder functions as the overall ranap_{encode,decode} didn't compile yet. As the latter is now finally compiling, we can remove those copies and link in ranap_{encode,decode}.o
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/hnbgw_ranap.c488
2 files changed, 3 insertions, 487 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index d6498b2..e0b916d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -8,7 +8,7 @@ COMMON_LDADD = -lsctp
bin_PROGRAMS = hnbgw
-hnbgw_SOURCES = hnbap_encoder.c hnbap_decoder.c rua_encoder.c rua_decoder.c ranap_common.c rua_common.c hnbap_common.c iu_helpers.c asn1helpers.c hnbgw.c hnbgw_hnbap.c hnbgw_rua.c hnbgw_ranap.c
+hnbgw_SOURCES = hnbap_encoder.c hnbap_decoder.c rua_encoder.c rua_decoder.c ranap_common.c rua_common.c hnbap_common.c iu_helpers.c asn1helpers.c hnbgw.c hnbgw_hnbap.c hnbgw_rua.c hnbgw_ranap.c ranap_decoder.c ranap_encoder.c
hnbgw_LDADD = $(OSMOCORE_LIBS) $(OSMOVTY_LIBS) $(OSMOGSM_LIBS) $(ASN1C_LIBS) $(COMMON_LDADD) hnbap/libosmo-asn1-hnbap.a rua/libosmo-asn1-rua.a ranap/libosmo-asn1-ranap.a
diff --git a/src/hnbgw_ranap.c b/src/hnbgw_ranap.c
index 15efb85..9cad6ae 100644
--- a/src/hnbgw_ranap.c
+++ b/src/hnbgw_ranap.c
@@ -32,492 +32,8 @@
#include "hnbgw.h"
#include "hnbgw_rua.h"
-//#include "ranap_common.h"
-
-#include "ranap/RANAP_RANAP-PDU.h"
-#include "ranap/RANAP_ResetAcknowledge.h"
-#include "ranap/RANAP_Reset.h"
-#include "ranap/RANAP_ProtocolIE-ID.h"
-#include "ranap/RANAP_Cause.h"
-#include "ranap/RANAP_CN-DomainIndicator.h"
-#include "ranap/RANAP_GlobalRNC-ID.h"
-#include "ranap/RANAP_CriticalityDiagnostics.h"
-
-/***********************************************************************
- * BEGIN auto-generated copy+pasted
- ***********************************************************************/
-
-/* this is copy+pasted from the asn1tostruct generated code that doesn't
- * compile as a whole */
-
-#define RANAP_DEBUG(x, args ...) DEBUGP(0, x, ## args)
-
-extern int asn1_xer_print;
-
-struct msgb *ranap_generate_successful_outcome(
- e_RANAP_ProcedureCode procedureCode,
- RANAP_Criticality_t criticality,
- asn_TYPE_descriptor_t * td,
- void *sptr);
-
-RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id, RANAP_Criticality_t criticality,
- asn_TYPE_descriptor_t *type, void *sptr);
-
-#define RESETIES_RANAP_GLOBALRNC_ID_PRESENT (1 << 0)
-
-typedef struct RANAP_ResetIEs_s {
- uint16_t presenceMask;
- RANAP_Cause_t cause;
- RANAP_CN_DomainIndicator_t cN_DomainIndicator;
- RANAP_GlobalRNC_ID_t globalRNC_ID; ///< Optional field
-} RANAP_ResetIEs_t;
-
-#define RESETACKNOWLEDGEIES_RANAP_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
-#define RESETACKNOWLEDGEIES_RANAP_GLOBALRNC_ID_PRESENT (1 << 1)
-
-typedef struct RANAP_ResetAcknowledgeIEs_s {
- uint16_t presenceMask;
- RANAP_CN_DomainIndicator_t cN_DomainIndicator;
- RANAP_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
- RANAP_GlobalRNC_ID_t globalRNC_ID; ///< Optional field
-} RANAP_ResetAcknowledgeIEs_t;
-
-int ranap_decode_reseties(
- RANAP_ResetIEs_t *resetIEs,
- ANY_t *any_p) {
-
- RANAP_Reset_t reset;
- RANAP_Reset_t *reset_p = &reset;
- int i, decoded = 0;
- int tempDecoded = 0;
- assert(any_p != NULL);
- assert(resetIEs != NULL);
-
- RANAP_DEBUG("Decoding message RANAP_ResetIEs (%s:%d)\n", __FILE__, __LINE__);
-
- ANY_to_type_aper(any_p, &asn_DEF_RANAP_Reset, (void**)&reset_p);
-
- for (i = 0; i < reset_p->reset_ies.list.count; i++) {
- RANAP_IE_t *ie_p;
- ie_p = reset_p->reset_ies.list.array[i];
- switch(ie_p->id) {
- case RANAP_ProtocolIE_ID_id_Cause:
- {
- RANAP_Cause_t ranaP_Cause;
- RANAP_Cause_t *ranaP_Cause_p = &ranaP_Cause;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_Cause, (void**)&ranaP_Cause_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE cause failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_Cause, ranaP_Cause_p);
- memcpy(&resetIEs->cause, ranaP_Cause_p, sizeof(RANAP_Cause_t));
- } break;
- case RANAP_ProtocolIE_ID_id_CN_DomainIndicator:
- {
- RANAP_CN_DomainIndicator_t ranaP_CNDomainIndicator;
- RANAP_CN_DomainIndicator_t *ranaP_CNDomainIndicator_p = &ranaP_CNDomainIndicator;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_CN_DomainIndicator, (void**)&ranaP_CNDomainIndicator_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_CN_DomainIndicator, ranaP_CNDomainIndicator_p);
- memcpy(&resetIEs->cN_DomainIndicator, ranaP_CNDomainIndicator_p, sizeof(RANAP_CN_DomainIndicator_t));
- } break;
- /* Optional field */
- case RANAP_ProtocolIE_ID_id_GlobalRNC_ID:
- {
-#if 0
- RANAP_GlobalRNC_ID_t ranaP_GlobalRNCID;
- RANAP_GlobalRNC_ID_t *ranaP_GlobalRNCID_p = &ranaP_GlobalRNCID;
- resetIEs->presenceMask |= RESETIES_RANAP_GLOBALRNC_ID_PRESENT;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_GlobalRNC_ID, (void**)&ranaP_GlobalRNCID_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE globalRNC_ID failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_GlobalRNC_ID, ranaP_GlobalRNCID_p);
- memcpy(&resetIEs->globalRNC_ID, ranaP_GlobalRNCID_p, sizeof(RANAP_GlobalRNC_ID_t));
-#endif
- } break;
- default:
- RANAP_DEBUG("Unknown protocol IE id (%d) for message reseties\n", (int)ie_p->id);
- return -1;
- }
- }
- return decoded;
-}
-
-int ranap_encode_resetacknowledgeies(
- RANAP_ResetAcknowledge_t *resetAcknowledge,
- RANAP_ResetAcknowledgeIEs_t *resetAcknowledgeIEs) {
-
- RANAP_IE_t *ie;
-
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_CN_DomainIndicator,
- RANAP_Criticality_reject,
- &asn_DEF_RANAP_CN_DomainIndicator,
- &resetAcknowledgeIEs->cN_DomainIndicator)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&resetAcknowledge->resetAcknowledge_ies.list, ie);
-
- /* Optional field */
- if ((resetAcknowledgeIEs->presenceMask & RESETACKNOWLEDGEIES_RANAP_CRITICALITYDIAGNOSTICS_PRESENT)
- == RESETACKNOWLEDGEIES_RANAP_CRITICALITYDIAGNOSTICS_PRESENT) {
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_CriticalityDiagnostics,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_CriticalityDiagnostics,
- &resetAcknowledgeIEs->criticalityDiagnostics)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&resetAcknowledge->resetAcknowledge_ies.list, ie);
- }
-
- /* Optional field */
- if ((resetAcknowledgeIEs->presenceMask & RESETACKNOWLEDGEIES_RANAP_GLOBALRNC_ID_PRESENT)
- == RESETACKNOWLEDGEIES_RANAP_GLOBALRNC_ID_PRESENT) {
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_GlobalRNC_ID,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_GlobalRNC_ID,
- &resetAcknowledgeIEs->globalRNC_ID)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&resetAcknowledge->resetAcknowledge_ies.list, ie);
- }
-
- return 0;
-}
-
-#include "ranap/RANAP_InitialUE-Message.h"
-#include "ranap/RANAP_CN-DomainIndicator.h"
-#include "ranap/RANAP_LAI.h"
-#include "ranap/RANAP_SAI.h"
-#include "ranap/RANAP_NAS-PDU.h"
-#include "ranap/RANAP_IuSignallingConnectionIdentifier.h"
-#include "ranap/RANAP_GlobalCN-ID.h"
-
-typedef struct RANAP_InitialUE_MessageIEs_s {
- RANAP_CN_DomainIndicator_t cN_DomainIndicator;
- RANAP_LAI_t lai;
- RANAP_SAI_t sai;
- RANAP_NAS_PDU_t nas_pdu;
- RANAP_IuSignallingConnectionIdentifier_t iuSigConId;
- RANAP_GlobalRNC_ID_t globalRNC_ID;
-} RANAP_InitialUE_MessageIEs_t;
-
-int ranap_decode_initialue_messageies(
- RANAP_InitialUE_MessageIEs_t *initialUE_MessageIEs,
- ANY_t *any_p) {
-
- RANAP_InitialUE_Message_t initialUE_Message;
- RANAP_InitialUE_Message_t *initialUE_Message_p = &initialUE_Message;
- int i, decoded = 0;
- int tempDecoded = 0;
- assert(any_p != NULL);
- assert(initialUE_MessageIEs != NULL);
-
- RANAP_DEBUG("Decoding message RANAP_InitialUE_MessageIEs (%s:%d)\n", __FILE__, __LINE__);
-
- ANY_to_type_aper(any_p, &asn_DEF_RANAP_InitialUE_Message, (void**)&initialUE_Message_p);
-
- for (i = 0; i < initialUE_Message_p->initialUE_Message_ies.list.count; i++) {
- RANAP_IE_t *ie_p;
- ie_p = initialUE_Message_p->initialUE_Message_ies.list.array[i];
- switch(ie_p->id) {
- case RANAP_ProtocolIE_ID_id_CN_DomainIndicator:
- {
- RANAP_CN_DomainIndicator_t ranaP_CNDomainIndicator;
- RANAP_CN_DomainIndicator_t *ranaP_CNDomainIndicator_p = &ranaP_CNDomainIndicator;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_CN_DomainIndicator, (void**)&ranaP_CNDomainIndicator_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_CN_DomainIndicator, ranaP_CNDomainIndicator_p);
- memcpy(&initialUE_MessageIEs->cN_DomainIndicator, ranaP_CNDomainIndicator_p, sizeof(RANAP_CN_DomainIndicator_t));
- } break;
- case RANAP_ProtocolIE_ID_id_LAI:
- {
- RANAP_LAI_t ranap_lai;
- RANAP_LAI_t *ranap_lai_p = &ranap_lai;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_LAI, (void**)&ranap_lai_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE lai failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_LAI, ranap_lai_p);
- memcpy(&initialUE_MessageIEs->lai, ranap_lai_p, sizeof(RANAP_LAI_t));
- } break;
- case RANAP_ProtocolIE_ID_id_SAI:
- {
- RANAP_SAI_t ranap_sai;
- RANAP_SAI_t *ranap_sai_p = &ranap_sai;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_SAI, (void**)&ranap_sai_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE sai failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_SAI, ranap_sai_p);
- memcpy(&initialUE_MessageIEs->sai, ranap_sai_p, sizeof(RANAP_SAI_t));
- } break;
- case RANAP_ProtocolIE_ID_id_NAS_PDU:
- {
- RANAP_NAS_PDU_t ranap_naspdu;
- RANAP_NAS_PDU_t *ranap_naspdu_p = &ranap_naspdu;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_NAS_PDU, (void**)&ranap_naspdu_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE nas_pdu failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_NAS_PDU, ranap_naspdu_p);
- memcpy(&initialUE_MessageIEs->nas_pdu, ranap_naspdu_p, sizeof(RANAP_NAS_PDU_t));
- } break;
- case RANAP_ProtocolIE_ID_id_IuSigConId:
- {
- RANAP_IuSignallingConnectionIdentifier_t ranaP_IuSignallingConnectionIdentifier;
- RANAP_IuSignallingConnectionIdentifier_t *ranaP_IuSignallingConnectionIdentifier_p = &ranaP_IuSignallingConnectionIdentifier;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_IuSignallingConnectionIdentifier, (void**)&ranaP_IuSignallingConnectionIdentifier_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE iuSigConId failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_IuSignallingConnectionIdentifier, ranaP_IuSignallingConnectionIdentifier_p);
- memcpy(&initialUE_MessageIEs->iuSigConId, ranaP_IuSignallingConnectionIdentifier_p, sizeof(RANAP_IuSignallingConnectionIdentifier_t));
- } break;
- case RANAP_ProtocolIE_ID_id_GlobalRNC_ID:
- {
- RANAP_GlobalRNC_ID_t ranaP_GlobalRNCID;
- RANAP_GlobalRNC_ID_t *ranaP_GlobalRNCID_p = &ranaP_GlobalRNCID;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_GlobalRNC_ID, (void**)&ranaP_GlobalRNCID_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE globalRNC_ID failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_GlobalRNC_ID, ranaP_GlobalRNCID_p);
- memcpy(&initialUE_MessageIEs->globalRNC_ID, ranaP_GlobalRNCID_p, sizeof(RANAP_GlobalRNC_ID_t));
- } break;
- default:
- RANAP_DEBUG("Unknown protocol IE id (%d) for message initialue_messageies\n", (int)ie_p->id);
- return -1;
- }
- }
- return decoded;
-}
-
-#include "ranap/RANAP_DirectTransfer.h"
-#include "ranap/RANAP_SAPI.h"
-#include "ranap/RANAP_RAC.h"
-
-#define DIRECTTRANSFERIES_RANAP_LAI_PRESENT (1 << 0)
-#define DIRECTTRANSFERIES_RANAP_RAC_PRESENT (1 << 1)
-#define DIRECTTRANSFERIES_RANAP_SAI_PRESENT (1 << 2)
-#define DIRECTTRANSFERIES_RANAP_SAPI_PRESENT (1 << 3)
-
-typedef struct RANAP_DirectTransferIEs_s {
- uint16_t presenceMask;
- RANAP_NAS_PDU_t nas_pdu;
- RANAP_LAI_t lai; ///< Optional field
- RANAP_RAC_t rac; ///< Optional field
- RANAP_SAI_t sai; ///< Optional field
- RANAP_SAPI_t sapi; ///< Optional field
-} RANAP_DirectTransferIEs_t;
-
-int ranap_decode_directtransferies(
- RANAP_DirectTransferIEs_t *directTransferIEs,
- ANY_t *any_p) {
-
- RANAP_DirectTransfer_t directTransfer;
- RANAP_DirectTransfer_t *directTransfer_p = &directTransfer;
- int i, decoded = 0;
- int tempDecoded = 0;
- assert(any_p != NULL);
- assert(directTransferIEs != NULL);
-
- RANAP_DEBUG("Decoding message RANAP_DirectTransferIEs (%s:%d)\n", __FILE__, __LINE__);
-
- ANY_to_type_aper(any_p, &asn_DEF_RANAP_DirectTransfer, (void**)&directTransfer_p);
-
- for (i = 0; i < directTransfer_p->directTransfer_ies.list.count; i++) {
- RANAP_IE_t *ie_p;
- ie_p = directTransfer_p->directTransfer_ies.list.array[i];
- switch(ie_p->id) {
- case RANAP_ProtocolIE_ID_id_NAS_PDU:
- {
- RANAP_NAS_PDU_t ranap_naspdu;
- RANAP_NAS_PDU_t *ranap_naspdu_p = &ranap_naspdu;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_NAS_PDU, (void**)&ranap_naspdu_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE nas_pdu failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_NAS_PDU, ranap_naspdu_p);
- memcpy(&directTransferIEs->nas_pdu, ranap_naspdu_p, sizeof(RANAP_NAS_PDU_t));
- } break;
- /* Optional field */
- case RANAP_ProtocolIE_ID_id_LAI:
- {
- RANAP_LAI_t ranap_lai;
- RANAP_LAI_t *ranap_lai_p = &ranap_lai;
- directTransferIEs->presenceMask |= DIRECTTRANSFERIES_RANAP_LAI_PRESENT;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_LAI, (void**)&ranap_lai_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE lai failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_LAI, ranap_lai_p);
- memcpy(&directTransferIEs->lai, ranap_lai_p, sizeof(RANAP_LAI_t));
- } break;
- /* Optional field */
- case RANAP_ProtocolIE_ID_id_RAC:
- {
- RANAP_RAC_t ranap_rac;
- RANAP_RAC_t *ranap_rac_p = &ranap_rac;
- directTransferIEs->presenceMask |= DIRECTTRANSFERIES_RANAP_RAC_PRESENT;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_RAC, (void**)&ranap_rac_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE rac failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_RAC, ranap_rac_p);
- memcpy(&directTransferIEs->rac, ranap_rac_p, sizeof(RANAP_RAC_t));
- } break;
- /* Optional field */
- case RANAP_ProtocolIE_ID_id_SAI:
- {
- RANAP_SAI_t ranap_sai;
- RANAP_SAI_t *ranap_sai_p = &ranap_sai;
- directTransferIEs->presenceMask |= DIRECTTRANSFERIES_RANAP_SAI_PRESENT;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_SAI, (void**)&ranap_sai_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE sai failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_SAI, ranap_sai_p);
- memcpy(&directTransferIEs->sai, ranap_sai_p, sizeof(RANAP_SAI_t));
- } break;
- /* Optional field */
- case RANAP_ProtocolIE_ID_id_SAPI:
- {
- RANAP_SAPI_t ranap_sapi;
- RANAP_SAPI_t *ranap_sapi_p = &ranap_sapi;
- directTransferIEs->presenceMask |= DIRECTTRANSFERIES_RANAP_SAPI_PRESENT;
- tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_SAPI, (void**)&ranap_sapi_p);
- if (tempDecoded < 0) {
- RANAP_DEBUG("Decoding of IE sapi failed\n");
- return -1;
- }
- decoded += tempDecoded;
- if (asn1_xer_print)
- xer_fprint(stdout, &asn_DEF_RANAP_SAPI, ranap_sapi_p);
- memcpy(&directTransferIEs->sapi, ranap_sapi_p, sizeof(RANAP_SAPI_t));
- } break;
- default:
- RANAP_DEBUG("Unknown protocol IE id (%d) for message directtransferies\n", (int)ie_p->id);
- return -1;
- }
- }
- return decoded;
-}
-
-int ranap_encode_directtransferies(
- RANAP_DirectTransfer_t *directTransfer,
- RANAP_DirectTransferIEs_t *directTransferIEs) {
-
- RANAP_IE_t *ie;
-
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_NAS_PDU,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_NAS_PDU,
- &directTransferIEs->nas_pdu)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
-
- /* Optional field */
- if ((directTransferIEs->presenceMask & DIRECTTRANSFERIES_RANAP_LAI_PRESENT)
- == DIRECTTRANSFERIES_RANAP_LAI_PRESENT) {
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_LAI,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_LAI,
- &directTransferIEs->lai)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
- }
-
- /* Optional field */
- if ((directTransferIEs->presenceMask & DIRECTTRANSFERIES_RANAP_RAC_PRESENT)
- == DIRECTTRANSFERIES_RANAP_RAC_PRESENT) {
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_RAC,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_RAC,
- &directTransferIEs->rac)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
- }
-
- /* Optional field */
- if ((directTransferIEs->presenceMask & DIRECTTRANSFERIES_RANAP_SAI_PRESENT)
- == DIRECTTRANSFERIES_RANAP_SAI_PRESENT) {
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_SAI,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_SAI,
- &directTransferIEs->sai)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
- }
-
- /* Optional field */
- if ((directTransferIEs->presenceMask & DIRECTTRANSFERIES_RANAP_SAPI_PRESENT)
- == DIRECTTRANSFERIES_RANAP_SAPI_PRESENT) {
- if ((ie = ranap_new_ie(RANAP_ProtocolIE_ID_id_SAPI,
- RANAP_Criticality_ignore,
- &asn_DEF_RANAP_SAPI,
- &directTransferIEs->sapi)) == NULL) {
- return -1;
- }
- ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
- }
-
- return 0;
-}
-
-
-
-
-/***********************************************************************
- * END auto-generated copy+pasted
- ***********************************************************************/
+#include "ranap_common.h"
+#include "ranap_ies_defs.h"
static int ranap_tx_reset_ack(struct hnb_context *hnb,
RANAP_CN_DomainIndicator_t domain)