{rua,hnbap,ranap}_common: Add missing encoding functions
We used to only have those generator functions that we needed for the existing hnbgw code; Implement the missing encoders
This commit is contained in:
parent
08d5da6647
commit
cbaaeefe00
|
@ -186,36 +186,41 @@ struct msgb *hnbap_generate_successful_outcome(
|
|||
return msg;
|
||||
}
|
||||
|
||||
#if 0
|
||||
ssize_t s1ap_generate_unsuccessful_outcome(uint8_t ** buffer,
|
||||
uint32_t * length,
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr)
|
||||
struct msgb *hnbap_generate_unsuccessful_outcome(
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr)
|
||||
{
|
||||
|
||||
HNBAP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
struct msgb *msg = hnbap_msgb_alloc();
|
||||
asn_enc_rval_t rval;
|
||||
int rc;
|
||||
|
||||
memset(&pdu, 0, sizeof(HNBAP_PDU_t));
|
||||
|
||||
pdu.present = HNBAP_PDU_PR_unsuccessfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if ((encoded =
|
||||
aper_encode_to_new_buffer(&asn_DEF_HNBAP_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.unsuccessfulOutcome.criticality = criticality;
|
||||
rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
|
||||
if (rc < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
rval = aper_encode_to_buffer(&asn_DEF_HNBAP_PDU, &pdu,
|
||||
msg->data, msgb_tailroom(msg));
|
||||
if (rval.encoded < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error encoding type %s\n", rval.failed_type->name);
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return encoded;
|
||||
msgb_put(msg, rval.encoded/8);
|
||||
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
IE_t *hnbap_new_ie(ProtocolIE_ID_t id,
|
||||
Criticality_t criticality,
|
||||
|
|
|
@ -146,6 +146,12 @@ struct msgb *hnbap_generate_successful_outcome(
|
|||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr);
|
||||
|
||||
struct msgb *hnbap_generate_unsuccessful_outcome(
|
||||
e_ProcedureCode procedureCode,
|
||||
Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr);
|
||||
|
||||
IE_t *hnbap_new_ie(ProtocolIE_ID_t id, Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *type, void *sptr);
|
||||
|
||||
|
|
|
@ -35,36 +35,39 @@ static struct msgb *ranap_msgb_alloc(void)
|
|||
return msgb_alloc(1024, "RANAP Tx");
|
||||
}
|
||||
|
||||
#if 0
|
||||
ssize_t ranap_generate_initiating_message(uint8_t ** buffer,
|
||||
uint32_t * length,
|
||||
e_RANAP_ProcedureCode procedureCode,
|
||||
struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCode,
|
||||
RANAP_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td, void *sptr)
|
||||
asn_TYPE_descriptor_t *td, void *sptr)
|
||||
{
|
||||
RANAP_RANAP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
struct msgb *msg = ranap_msgb_alloc();
|
||||
asn_enc_rval_t rval;
|
||||
int rc;
|
||||
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
|
||||
pdu.present = RANAP_RANAP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage.procedureCode = procedureCode;
|
||||
pdu.choice.initiatingMessage.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
|
||||
|
||||
if (asn1_xer_print)
|
||||
xer_fprint(stdout, &asn_DEF_RANAP_RAMAP_PDU, (void *)&pdu);
|
||||
|
||||
if ((encoded =
|
||||
aper_encode_to_new_buffer(&asn_DEF_RANAP_RANAP_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
|
||||
if (rc < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
return encoded;
|
||||
rval = aper_encode_to_buffer(&asn_DEF_RANAP_RANAP_PDU, &pdu,
|
||||
msg->data, msgb_tailroom(msg));
|
||||
if (rval.encoded < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error encoding type: %s\n",
|
||||
rval.failed_type->name);
|
||||
|
||||
}
|
||||
|
||||
msgb_put(msg, rval.encoded/8);
|
||||
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
struct msgb *ranap_generate_successful_outcome(
|
||||
e_RANAP_ProcedureCode procedureCode,
|
||||
|
@ -102,36 +105,41 @@ struct msgb *ranap_generate_successful_outcome(
|
|||
return msg;
|
||||
}
|
||||
|
||||
#if 0
|
||||
ssize_t ranap_generate_unsuccessful_outcome(uint8_t ** buffer,
|
||||
uint32_t * length,
|
||||
struct msgb *ranap_generate_unsuccessful_outcome(
|
||||
e_RANAP_ProcedureCode procedureCode,
|
||||
RANAP_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr)
|
||||
{
|
||||
|
||||
RANAP_RANAP_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
struct msgb *msg = ranap_msgb_alloc();
|
||||
asn_enc_rval_t rval;
|
||||
int rc;
|
||||
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
|
||||
pdu.present = RANAP_RANAP_PDU_PR_unsuccessfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if ((encoded =
|
||||
aper_encode_to_new_buffer(&asn_DEF_RANAP_RANAP_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
if (rc < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
rval = aper_encode_to_buffer(&asn_DEF_RANAP_RANAP_PDU, &pdu,
|
||||
msg->data, msgb_tailroom(msg));
|
||||
if (rval.encoded < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error encoding type %s\n", rval.failed_type->name);
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return encoded;
|
||||
msgb_put(msg, rval.encoded/8);
|
||||
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id,
|
||||
RANAP_Criticality_t criticality,
|
||||
|
|
|
@ -591,12 +591,22 @@
|
|||
|
||||
extern int asn1_xer_print;
|
||||
|
||||
struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCode,
|
||||
RANAP_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *td, void *sptr);
|
||||
|
||||
struct msgb *ranap_generate_successful_outcome(
|
||||
e_RANAP_ProcedureCode procedureCode,
|
||||
RANAP_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr);
|
||||
|
||||
struct msgb *ranap_generate_unsuccessful_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);
|
||||
|
||||
|
|
|
@ -165,36 +165,41 @@ struct msgb *rua_generate_successful_outcome(
|
|||
return msg;
|
||||
}
|
||||
|
||||
#if 0
|
||||
ssize_t rua_generate_unsuccessful_outcome(uint8_t ** buffer,
|
||||
uint32_t * length,
|
||||
e_RUA_ProcedureCode procedureCode,
|
||||
RUA_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr)
|
||||
struct msgb *rua_generate_unsuccessful_outcome(
|
||||
e_RUA_ProcedureCode procedureCode,
|
||||
RUA_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr)
|
||||
{
|
||||
|
||||
RUA_RUA_PDU_t pdu;
|
||||
ssize_t encoded;
|
||||
struct msgb *msg = rua_msgb_alloc();
|
||||
asn_enc_rval_t rval;
|
||||
int rc;
|
||||
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
|
||||
pdu.present = RUA_RUA_PDU_PR_unsuccessfulOutcome;
|
||||
pdu.choice.successfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.successfulOutcome.criticality = criticality;
|
||||
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
|
||||
|
||||
if ((encoded =
|
||||
aper_encode_to_new_buffer(&asn_DEF_RUA_RUA_PDU, 0, &pdu,
|
||||
(void **)buffer)) < 0) {
|
||||
return -1;
|
||||
pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
|
||||
pdu.choice.unsuccessfulOutcome.criticality = criticality;
|
||||
rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
|
||||
if (rc < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*length = encoded;
|
||||
rval = aper_encode_to_buffer(&asn_DEF_RUA_RUA_PDU, &pdu,
|
||||
msg->data, msgb_tailroom(msg));
|
||||
if (rval.encoded < 0) {
|
||||
LOGP(DMAIN, LOGL_ERROR, "Error encoding type %s\n", rval.failed_type->name);
|
||||
msgb_free(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return encoded;
|
||||
msgb_put(msg, rval.encoded/8);
|
||||
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id,
|
||||
RUA_Criticality_t criticality,
|
||||
|
|
|
@ -59,6 +59,12 @@ struct msgb *rua_generate_successful_outcome(
|
|||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr);
|
||||
|
||||
struct msgb *rua_generate_unsuccessful_outcome(
|
||||
e_RUA_ProcedureCode procedureCode,
|
||||
RUA_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t * td,
|
||||
void *sptr);
|
||||
|
||||
RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id, RUA_Criticality_t criticality,
|
||||
asn_TYPE_descriptor_t *type, void *sptr);
|
||||
|
||||
|
|
Loading…
Reference in New Issue