diff options
author | Harald Welte <laforge@gnumonks.org> | 2015-12-16 17:31:43 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2015-12-16 17:31:43 +0100 |
commit | 08d5da664740432b6933220b094787da9ca90ab8 (patch) | |
tree | 755e2a0edee8b9ea32ef32b548c3792ee775b56e /src/hnbgw_ranap.c | |
parent | 49695572ba3c55c012c9b1a55d13cfca18f4ebbf (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/hnbgw_ranap.c')
-rw-r--r-- | src/hnbgw_ranap.c | 488 |
1 files changed, 2 insertions, 486 deletions
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) |