From: Juha Hyttinen Date: Sat, 11 Jul 2020 10:32:57 +0000 (+0300) Subject: Make subscription manager independent of E2SMs X-Git-Tag: 0.5.8~16 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt%2Fsubmgr.git;a=commitdiff_plain;h=cdc35bff0dd4c41d1e764d3f48efa70d9f33a8f7 Make subscription manager independent of E2SMs Issue-ID: RIC-628 Change-Id: Ia9e37863c0a5b76f535867b5aa127a8748d0a1d9 Signed-off-by: Juha Hyttinen --- diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/BIT_STRING.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/BIT_STRING.c deleted file mode 100644 index e8d7354..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/BIT_STRING.c +++ /dev/null @@ -1,656 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BIT STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { - sizeof(BIT_STRING_t), - offsetof(BIT_STRING_t, _asn_ctx), - ASN_OSUBV_BIT -}; -asn_TYPE_operation_t asn_OP_BIT_STRING = { - OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ - BIT_STRING_print, - BIT_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_decode_xer_binary, - BIT_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BIT_STRING_decode_oer, - BIT_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BIT_STRING_decode_uper, /* Unaligned PER decoder */ - BIT_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BIT_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { - "BIT STRING", - "BIT_STRING", - &asn_OP_BIT_STRING, - asn_DEF_BIT_STRING_tags, - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - asn_DEF_BIT_STRING_tags, /* Same as above */ - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - { 0, 0, BIT_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs -}; - -/* - * BIT STRING generic constraint. - */ -int -BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - - if(st && st->buf) { - if((st->size == 0 && st->bits_unused) - || st->bits_unused < 0 || st->bits_unused > 7) { - ASN__CTFAIL(app_key, td, sptr, - "%s: invalid padding byte (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} - -static const char *_bit_pattern[16] = { - "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", - "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" -}; - -asn_enc_rval_t -BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - char scratch[128]; - char *p = scratch; - char *scend = scratch + (sizeof(scratch) - 10); - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - int xcan = (flags & XER_F_CANONICAL); - uint8_t *buf; - uint8_t *end; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size - 1; /* Last byte is special */ - - /* - * Binary dump - */ - for(; buf < end; buf++) { - int v = *buf; - int nline = xcan?0:(((buf - st->buf) % 8) == 0); - if(p >= scend || nline) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - if(nline) ASN__TEXT_INDENT(1, ilevel); - } - memcpy(p + 0, _bit_pattern[v >> 4], 4); - memcpy(p + 4, _bit_pattern[v & 0x0f], 4); - p += 8; - } - - if(!xcan && ((buf - st->buf) % 8) == 0) - ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - - if(buf == end) { - int v = *buf; - int ubits = st->bits_unused; - int i; - for(i = 7; i >= ubits; i--) - *p++ = (v & (1 << i)) ? 0x31 : 0x30; - ASN__CALLBACK(scratch, p - scratch); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - - -/* - * BIT STRING specific contents printer. - */ -int -BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - char scratch[64]; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - uint8_t *buf; - uint8_t *end; - char *p = scratch; - - (void)td; /* Unused argument */ - - if(!st || !st->buf) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - ilevel++; - buf = st->buf; - end = buf + st->size; - - /* - * Hexadecimal dump. - */ - for(; buf < end; buf++) { - if((buf - st->buf) % 16 == 0 && (st->size > 16) - && buf != st->buf) { - _i_INDENT(1); - /* Dump the string */ - if(cb(scratch, p - scratch, app_key) < 0) return -1; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Eat the tailing space */ - - if((st->size > 16)) { - _i_INDENT(1); - } - - /* Dump the incomplete 16-bytes row */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - if(st->bits_unused) { - int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", - st->bits_unused, st->bits_unused == 1 ? "" : "s"); - assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); - if(ret > 0 && ret < (ssize_t)sizeof(scratch) - && cb(scratch, ret, app_key) < 0) - return -1; - } - - return 0; -} - -/* - * Non-destructively remove the trailing 0-bits from the given bit string. - */ -static const BIT_STRING_t * -BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { - const uint8_t *b; - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - - if(st->size == 0) { - assert(st->bits_unused == 0); - return st; - } else { - for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { - ; - } - /* b points to the last byte which may contain data */ - if(*b) { - int unused = 7; - uint8_t v = *b; - v &= -(int8_t)v; - if(v & 0x0F) unused -= 4; - if(v & 0x33) unused -= 2; - if(v & 0x55) unused -= 1; - tmp->size = b-st->buf + 1; - tmp->bits_unused = unused; - } else { - tmp->size = b-st->buf; - tmp->bits_unused = 0; - } - - assert(b >= st->buf); - } - - unconst.c_buf = st->buf; - tmp->buf = unconst.nc_buf; - return tmp; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - /* - * Remove information about trailing bits, since - * X.680 (08/2015) #22.7 "ensure that different semantics are not" - * "associated with [values that differ only in] the trailing 0 bits." - */ - BIT_STRING_t compact_a, compact_b; - const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); - const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - - assert(specs && specs->subvariant == ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - /* Figure out how many unused bits */ - if(a->bits_unused > b->bits_unused) { - return -1; - } else if(a->bits_unused < b->bits_unused) { - return 1; - } else { - return 0; - } - } - } else { - return ret; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { - APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; - -asn_dec_rval_t -BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - - (void)opt_codec_ctx; - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - - if(specs->subvariant != ASN_OSUBV_BIT) { - ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); - RETURN(RC_FAIL); - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - st->size = (csiz->upper_bound + 7) >> 3; - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += csiz->upper_bound; - st->buf[st->size] = 0; - st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - BIT_STRING_t compact_bstr; /* Do not modify this directly! */ - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - size_t size_in_bits; - const uint8_t *buf; - int ret; - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(specs->subvariant == ASN_OSUBV_BIT) { - if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - /* Figure out the size without the trailing bits */ - st = BIT_STRING__compactify(st, &compact_bstr); - size_in_bits = 8 * st->size - st->bits_unused; - - ASN_DEBUG( - "Encoding %s into %" ASN_PRI_SIZE " bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_bits > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; - ASN_DEBUG( - "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " - "value %" ASN_PRI_SSIZE "", - st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, - add_trailer, - add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); - ret = per_put_few_bits( - po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = per_put_many_bits(po, st->buf, size_in_bits); - if(ret) ASN__ENCODE_FAILED; - if(add_trailer) { - static const uint8_t zeros[16]; - size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; - while(trailing_zero_bits > 0) { - if(trailing_zero_bits > 8 * sizeof(zeros)) { - ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); - trailing_zero_bits -= 8 * sizeof(zeros); - } else { - ret = per_put_many_bits(po, zeros, trailing_zero_bits); - trailing_zero_bits = 0; - } - if(ret) ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - do { - int need_eom = 0; - ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); - - ret = per_put_many_bits(po, buf, maySave); - if(ret) ASN__ENCODE_FAILED; - - buf += maySave >> 3; - size_in_bits -= maySave; - assert(!(maySave & 0x07) || !size_in_bits); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_bits); - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -asn_random_fill_result_t -BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - static unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_bits, rnd_len; - BIT_STRING_t *st; - - if(max_length == 0) return result_skipped; - - switch(specs->subvariant) { - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - break; - default: - break; - } - - /* Figure out how far we should go */ - rnd_bits = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length < (size_t)pc->lower_bound) { - return result_skipped; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_bits = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_bits = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_bits from the table */ - if(rnd_bits < max_length) { - break; - } - /* Fall through */ - default: - rnd_bits = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_bits = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_bits = asn_random_between(0, max_length - 1); - } - } else if(rnd_bits >= max_length) { - rnd_bits = asn_random_between(0, max_length - 1); - } - - rnd_len = (rnd_bits + 7) / 8; - buf = CALLOC(1, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[rnd_len]; - - for(b = buf; b < bend; b++) { - *(uint8_t *)b = asn_random_between(0, 255); - } - *b = 0; /* Zero-terminate just in case. */ - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = rnd_len; - st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; - if(st->bits_unused) { - assert(st->size > 0); - st->buf[st->size-1] &= 0xff << st->bits_unused; - } - - result_ok.length = st->size; - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/BIT_STRING.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/BIT_STRING.h deleted file mode 100644 index c1bdbbc..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/BIT_STRING.h +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BIT_STRING_H_ -#define _BIT_STRING_H_ - -#include /* Some help from OCTET STRING */ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct BIT_STRING_s { - uint8_t *buf; /* BIT STRING body */ - size_t size; /* Size of the above buffer */ - - int bits_unused;/* Unused trailing bits in the last octet (0..7) */ - - asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ -} BIT_STRING_t; - -extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; -extern asn_TYPE_operation_t asn_OP_BIT_STRING; -extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; - -asn_struct_print_f BIT_STRING_print; /* Human-readable output */ -asn_struct_compare_f BIT_STRING_compare; -asn_constr_check_f BIT_STRING_constraint; -xer_type_encoder_f BIT_STRING_encode_xer; -oer_type_decoder_f BIT_STRING_decode_oer; -oer_type_encoder_f BIT_STRING_encode_oer; -per_type_decoder_f BIT_STRING_decode_uper; -per_type_encoder_f BIT_STRING_encode_uper; -asn_random_fill_f BIT_STRING_random_fill; - -#define BIT_STRING_free OCTET_STRING_free -#define BIT_STRING_decode_ber OCTET_STRING_decode_ber -#define BIT_STRING_encode_der OCTET_STRING_encode_der -#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary -#define BIT_STRING_decode_aper OCTET_STRING_decode_aper -#define BIT_STRING_encode_aper OCTET_STRING_encode_aper - -#ifdef __cplusplus -} -#endif - -#endif /* _BIT_STRING_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/BOOLEAN.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/BOOLEAN.c deleted file mode 100644 index 25831e2..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/BOOLEAN.c +++ /dev/null @@ -1,492 +0,0 @@ -/*- - * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BOOLEAN basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) -}; -asn_TYPE_operation_t asn_OP_BOOLEAN = { - BOOLEAN_free, - BOOLEAN_print, - BOOLEAN_compare, - BOOLEAN_decode_ber, - BOOLEAN_encode_der, - BOOLEAN_decode_xer, - BOOLEAN_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BOOLEAN_decode_oer, - BOOLEAN_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BOOLEAN_decode_uper, /* Unaligned PER decoder */ - BOOLEAN_encode_uper, /* Unaligned PER encoder */ - BOOLEAN_decode_aper, /* Aligned PER decoder */ - BOOLEAN_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BOOLEAN_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { - "BOOLEAN", - "BOOLEAN", - &asn_OP_BOOLEAN, - asn_DEF_BOOLEAN_tags, - sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), - asn_DEF_BOOLEAN_tags, /* Same as above */ - sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode BOOLEAN type. - */ -asn_dec_rval_t -BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **bool_value, - const void *buf_ptr, size_t size, int tag_mode) { - BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; - asn_dec_rval_t rval; - ber_tlv_len_t length; - ber_tlv_len_t lidx; - - if(st == NULL) { - st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); - if(st == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("Boolean length is %d bytes", (int)length); - - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * Compute boolean value. - */ - for(*st = 0, lidx = 0; - (lidx < length) && *st == 0; lidx++) { - /* - * Very simple approach: read bytes until the end or - * value is already TRUE. - * BOOLEAN is not supposed to contain meaningful data anyway. - */ - *st |= ((const uint8_t *)buf_ptr)[lidx]; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", - (long)rval.consumed, (long)length, - td->name, *st); - - return rval; -} - -asn_enc_rval_t -BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - - erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb) { - uint8_t bool_value; - - bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ - - if(cb(&bool_value, 1, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } - - erval.encoded += 1; - - ASN__ENCODED_OK(erval); -} - - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - BOOLEAN_t *st = (BOOLEAN_t *)sptr; - const char *p = (const char *)chunk_buf; - - (void)td; - - if(chunk_size && p[0] == 0x3c /* '<' */) { - switch(xer_check_tag(chunk_buf, chunk_size, "false")) { - case XCT_BOTH: - /* "" */ - *st = 0; - break; - case XCT_UNKNOWN_BO: - if(xer_check_tag(chunk_buf, chunk_size, "true") - != XCT_BOTH) - return XPBD_BROKEN_ENCODING; - /* "" */ - *st = 1; /* Or 0xff as in DER?.. */ - break; - default: - return XPBD_BROKEN_ENCODING; - } - return XPBD_BODY_CONSUMED; - } else { - return XPBD_BROKEN_ENCODING; - } -} - - -asn_dec_rval_t -BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, - BOOLEAN__xer_body_decode); -} - -asn_enc_rval_t -BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - - (void)ilevel; - (void)flags; - - if(!st) ASN__ENCODE_FAILED; - - if(*st) { - ASN__CALLBACK("", 7); - } else { - ASN__CALLBACK("", 8); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -int -BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - const char *buf; - size_t buflen; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st) { - if(*st) { - buf = "TRUE"; - buflen = 4; - } else { - buf = "FALSE"; - buflen = 5; - } - } else { - buf = ""; - buflen = 8; - } - - return (cb(buf, buflen, app_key) < 0) ? -1 : 0; -} - -void -BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(BOOLEAN_t)); - break; - } - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - BOOLEAN_t *st = (BOOLEAN_t *)*sptr; - - (void)opt_codec_ctx; - (void)td; - (void)constraints; - - if(!st) { - st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - /* - * Extract a single bit - */ - switch(per_get_few_bits(pd, 1)) { - case 1: *st = 1; break; - case 0: *st = 0; break; - case -1: default: ASN__DECODE_STARVED; - } - - ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); - - rv.code = RC_OK; - rv.consumed = 1; - return rv; -} - - -asn_enc_rval_t -BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - - (void)constraints; - - if(!st) ASN__ENCODE_FAILED; - - if(per_put_few_bits(po, *st ? 1 : 0, 1)) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - BOOLEAN_t *st = (BOOLEAN_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - (void)td; - - if(!st) { - st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - /* - * Extract a single bit - */ - switch(per_get_few_bits(pd, 1)) { - case 1: - *st = 1; - break; - case 0: - *st = 0; - break; - case -1: - default: - ASN__DECODE_STARVED; - } - - ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); - - rv.code = RC_OK; - rv.consumed = 1; - return rv; -} - -asn_enc_rval_t -BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - - (void)constraints; - - if(!st) ASN__ENCODE_FAILED; - - if(per_put_few_bits(po, *st ? 1 : 0, 1)) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -#ifndef ASN_DISABLE_OER_SUPPORT - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 1, 0, 0 }; - const BOOLEAN_t *st = sptr; - uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ - - (void)td; - (void)constraints; /* Constraints are unused in OER */ - - if(cb(&bool_value, 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } else { - ASN__ENCODED_OK(er); - } -} - -asn_dec_rval_t -BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - asn_dec_rval_t ok = {RC_OK, 1}; - BOOLEAN_t *st; - - (void)opt_codec_ctx; - (void)td; - (void)constraints; /* Constraints are unused in OER */ - - if(size < 1) { - ASN__DECODE_STARVED; - } - - if(!(st = *sptr)) { - st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - *st = *(const uint8_t *)ptr; - - return ok; -} - - - -#endif - -int -BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const BOOLEAN_t *a = aptr; - const BOOLEAN_t *b = bptr; - - (void)td; - - if(a && b) { - if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ - return 0; - } else if(!*a) { - return -1; - } else { - return 1; - } - } else if(!a) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - BOOLEAN_t *st = *sptr; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(st == NULL) { - return result_failed; - } - } - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->value; - if(pc->flags & APC_CONSTRAINED) { - *st = asn_random_between(pc->lower_bound, pc->upper_bound); - return result_ok; - } - } - - /* Simulate booleans that are sloppily set and biased. */ - switch(asn_random_between(0, 7)) { - case 0: - case 1: - case 2: - *st = 0; break; - case 3: *st = -1; break; - case 4: *st = 1; break; - case 5: *st = INT_MIN; break; - case 6: *st = INT_MAX; break; - default: - *st = asn_random_between(INT_MIN, INT_MAX); - break; - } - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/BOOLEAN.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/BOOLEAN.h deleted file mode 100644 index 620acf7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/BOOLEAN.h +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BOOLEAN_H_ -#define _BOOLEAN_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The underlying integer may contain various values, but everything - * non-zero is capped to 0xff by the DER encoder. The BER decoder may - * yield non-zero values different from 1, beware. - */ -typedef int BOOLEAN_t; - -extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; -extern asn_TYPE_operation_t asn_OP_BOOLEAN; - -asn_struct_free_f BOOLEAN_free; -asn_struct_print_f BOOLEAN_print; -asn_struct_compare_f BOOLEAN_compare; -ber_type_decoder_f BOOLEAN_decode_ber; -der_type_encoder_f BOOLEAN_encode_der; -oer_type_decoder_f BOOLEAN_decode_oer; -oer_type_encoder_f BOOLEAN_encode_oer; -per_type_decoder_f BOOLEAN_decode_uper; -per_type_encoder_f BOOLEAN_encode_uper; -per_type_decoder_f BOOLEAN_decode_aper; -per_type_encoder_f BOOLEAN_encode_aper; -xer_type_decoder_f BOOLEAN_decode_xer; -xer_type_encoder_f BOOLEAN_encode_xer; -asn_random_fill_f BOOLEAN_random_fill; - -#define BOOLEAN_constraint asn_generic_no_constraint - -#ifdef __cplusplus -} -#endif - -#endif /* _BOOLEAN_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition-Format1.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition-Format1.c deleted file mode 100644 index 5be9f73..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition-Format1.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-ActionDefinition-Format1.h" - -#include "E2_RANparameter-Item.h" -static int -memb_E2_ranParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ranParameter_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranParameter_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ranParameter_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameter_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ranParameter_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ranParameter_List_specs_2 = { - sizeof(struct E2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List), - offsetof(struct E2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ranParameter_List_2 = { - "ranParameter-List", - "ranParameter-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ranParameter_List_tags_2, - sizeof(asn_DEF_E2_ranParameter_List_tags_2) - /sizeof(asn_DEF_E2_ranParameter_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_E2_ranParameter_List_tags_2, /* Same as above */ - sizeof(asn_DEF_E2_ranParameter_List_tags_2) - /sizeof(asn_DEF_E2_ranParameter_List_tags_2[0]), /* 2 */ - { 0, &asn_PER_type_E2_ranParameter_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_E2_ranParameter_List_2, - 1, /* Single element */ - &asn_SPC_E2_ranParameter_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ActionDefinition_Format1_1[] = { - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_NRT_ActionDefinition_Format1, ranParameter_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_E2_ranParameter_List_2, - 0, - { 0, &asn_PER_memb_E2_ranParameter_List_constr_2, memb_E2_ranParameter_List_constraint_1 }, - 0, 0, /* No default value */ - "ranParameter-List" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_NRT_ActionDefinition_Format1_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ActionDefinition_Format1_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_ActionDefinition_Format1), - offsetof(struct E2_E2SM_gNB_NRT_ActionDefinition_Format1, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_NRT_ActionDefinition_Format1_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1 = { - "E2SM-gNB-NRT-ActionDefinition-Format1", - "E2SM-gNB-NRT-ActionDefinition-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_ActionDefinition_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_ActionDefinition_Format1_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition-Format1.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition-Format1.h deleted file mode 100644 index f0414b0..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition-Format1.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_ActionDefinition_Format1_H_ -#define _E2_E2SM_gNB_NRT_ActionDefinition_Format1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameter_Item; - -/* E2_E2SM-gNB-NRT-ActionDefinition-Format1 */ -typedef struct E2_E2SM_gNB_NRT_ActionDefinition_Format1 { - struct E2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List { - A_SEQUENCE_OF(struct E2_RANparameter_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ranParameter_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_ActionDefinition_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ActionDefinition_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ActionDefinition_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_ActionDefinition_Format1_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition.c deleted file mode 100644 index 95b3097..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-ActionDefinition.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_NRT_ActionDefinition_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ActionDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ActionDefinition, choice.actionDefinition_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "actionDefinition-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_ActionDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* actionDefinition-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ActionDefinition_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_ActionDefinition), - offsetof(struct E2_E2SM_gNB_NRT_ActionDefinition, _asn_ctx), - offsetof(struct E2_E2SM_gNB_NRT_ActionDefinition, present), - sizeof(((struct E2_E2SM_gNB_NRT_ActionDefinition *)0)->present), - asn_MAP_E2_E2SM_gNB_NRT_ActionDefinition_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition = { - "E2SM-gNB-NRT-ActionDefinition", - "E2SM-gNB-NRT-ActionDefinition", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_NRT_ActionDefinition_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_ActionDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_ActionDefinition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition.h deleted file mode 100644 index 30f4f79..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ActionDefinition.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_ActionDefinition_H_ -#define _E2_E2SM_gNB_NRT_ActionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-NRT-ActionDefinition-Format1.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_NRT_ActionDefinition_PR { - E2_E2SM_gNB_NRT_ActionDefinition_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_NRT_ActionDefinition_PR_actionDefinition_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_NRT_ActionDefinition_PR; - -/* E2_E2SM-gNB-NRT-ActionDefinition */ -typedef struct E2_E2SM_gNB_NRT_ActionDefinition { - E2_E2SM_gNB_NRT_ActionDefinition_PR present; - union E2_E2SM_gNB_NRT_ActionDefinition_u { - E2_E2SM_gNB_NRT_ActionDefinition_Format1_t actionDefinition_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_ActionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_ActionDefinition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader-Format1.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader-Format1.c deleted file mode 100644 index 7194c67..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader-Format1.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-ControlHeader-Format1.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ControlHeader_Format1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ControlHeader_Format1, command), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRT_ControlCommand, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "command" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ControlHeader_Format1, servedCellID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_NRT_Cell_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "servedCellID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ControlHeader_Format1, neighbourCellID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_NRT_Cell_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "neighbourCellID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_ControlHeader_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* command */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedCellID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighbourCellID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ControlHeader_Format1_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_ControlHeader_Format1), - offsetof(struct E2_E2SM_gNB_NRT_ControlHeader_Format1, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_ControlHeader_Format1_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1 = { - "E2SM-gNB-NRT-ControlHeader-Format1", - "E2SM-gNB-NRT-ControlHeader-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_ControlHeader_Format1_1, - 3, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_ControlHeader_Format1_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader-Format1.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader-Format1.h deleted file mode 100644 index 1ff4984..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader-Format1.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_ControlHeader_Format1_H_ -#define _E2_E2SM_gNB_NRT_ControlHeader_Format1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_NRT-ControlCommand.h" -#include "E2_NRT-Cell-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-NRT-ControlHeader-Format1 */ -typedef struct E2_E2SM_gNB_NRT_ControlHeader_Format1 { - E2_NRT_ControlCommand_t command; - E2_NRT_Cell_ID_t servedCellID; - E2_NRT_Cell_ID_t neighbourCellID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_ControlHeader_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ControlHeader_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ControlHeader_Format1_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_ControlHeader_Format1_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader.c deleted file mode 100644 index 212d7a8..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-ControlHeader.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_NRT_ControlHeader_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ControlHeader_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ControlHeader, choice.controlHeader_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_NRT_ControlHeader_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "controlHeader-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_ControlHeader_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlHeader-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ControlHeader_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_ControlHeader), - offsetof(struct E2_E2SM_gNB_NRT_ControlHeader, _asn_ctx), - offsetof(struct E2_E2SM_gNB_NRT_ControlHeader, present), - sizeof(((struct E2_E2SM_gNB_NRT_ControlHeader *)0)->present), - asn_MAP_E2_E2SM_gNB_NRT_ControlHeader_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlHeader = { - "E2SM-gNB-NRT-ControlHeader", - "E2SM-gNB-NRT-ControlHeader", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_NRT_ControlHeader_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_ControlHeader_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_ControlHeader_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader.h deleted file mode 100644 index db7a740..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlHeader.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_ControlHeader_H_ -#define _E2_E2SM_gNB_NRT_ControlHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-NRT-ControlHeader-Format1.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_NRT_ControlHeader_PR { - E2_E2SM_gNB_NRT_ControlHeader_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_NRT_ControlHeader_PR_controlHeader_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_NRT_ControlHeader_PR; - -/* E2_E2SM-gNB-NRT-ControlHeader */ -typedef struct E2_E2SM_gNB_NRT_ControlHeader { - E2_E2SM_gNB_NRT_ControlHeader_PR present; - union E2_E2SM_gNB_NRT_ControlHeader_u { - E2_E2SM_gNB_NRT_ControlHeader_Format1_t controlHeader_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_ControlHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlHeader; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_ControlHeader_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage-Format1.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage-Format1.c deleted file mode 100644 index b0f96e8..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage-Format1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-ControlMessage-Format1.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ControlMessage_Format1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ControlMessage_Format1, tablerecord), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRT_TableRecord, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tablerecord" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_ControlMessage_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tablerecord */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ControlMessage_Format1_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_ControlMessage_Format1), - offsetof(struct E2_E2SM_gNB_NRT_ControlMessage_Format1, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_ControlMessage_Format1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1 = { - "E2SM-gNB-NRT-ControlMessage-Format1", - "E2SM-gNB-NRT-ControlMessage-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_ControlMessage_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_ControlMessage_Format1_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage-Format1.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage-Format1.h deleted file mode 100644 index ec62dca..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage-Format1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_ControlMessage_Format1_H_ -#define _E2_E2SM_gNB_NRT_ControlMessage_Format1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_NRT-TableRecord.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-NRT-ControlMessage-Format1 */ -typedef struct E2_E2SM_gNB_NRT_ControlMessage_Format1 { - E2_NRT_TableRecord_t tablerecord; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_ControlMessage_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ControlMessage_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ControlMessage_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_ControlMessage_Format1_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage.c deleted file mode 100644 index 1f2d3ff..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-ControlMessage.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_NRT_ControlMessage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_ControlMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_ControlMessage, choice.controlMessage_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_NRT_ControlMessage_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "controlMessage-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_ControlMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlMessage-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_ControlMessage_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_ControlMessage), - offsetof(struct E2_E2SM_gNB_NRT_ControlMessage, _asn_ctx), - offsetof(struct E2_E2SM_gNB_NRT_ControlMessage, present), - sizeof(((struct E2_E2SM_gNB_NRT_ControlMessage *)0)->present), - asn_MAP_E2_E2SM_gNB_NRT_ControlMessage_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlMessage = { - "E2SM-gNB-NRT-ControlMessage", - "E2SM-gNB-NRT-ControlMessage", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_NRT_ControlMessage_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_ControlMessage_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_ControlMessage_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage.h deleted file mode 100644 index 062ce85..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-ControlMessage.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_ControlMessage_H_ -#define _E2_E2SM_gNB_NRT_ControlMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-NRT-ControlMessage-Format1.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_NRT_ControlMessage_PR { - E2_E2SM_gNB_NRT_ControlMessage_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_NRT_ControlMessage_PR_controlMessage_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_NRT_ControlMessage_PR; - -/* E2_E2SM-gNB-NRT-ControlMessage */ -typedef struct E2_E2SM_gNB_NRT_ControlMessage { - E2_E2SM_gNB_NRT_ControlMessage_PR present; - union E2_E2SM_gNB_NRT_ControlMessage_u { - E2_E2SM_gNB_NRT_ControlMessage_Format1_t controlMessage_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_ControlMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_ControlMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_ControlMessage_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.c deleted file mode 100644 index 80a9986..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1, triggerNature), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRT_TriggerNature, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "triggerNature" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* triggerNature */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1), - offsetof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1 = { - "E2SM-gNB-NRT-EventTriggerDefinition-Format1", - "E2SM-gNB-NRT-EventTriggerDefinition-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.h deleted file mode 100644 index 6e6b03d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_H_ -#define _E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_NRT-TriggerNature.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1 */ -typedef struct E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1 { - E2_NRT_TriggerNature_t triggerNature; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition.c deleted file mode 100644 index 831e12b..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-EventTriggerDefinition.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_NRT_EventTriggerDefinition_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_EventTriggerDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition, choice.eventDefinition_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eventDefinition-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_EventTriggerDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_EventTriggerDefinition_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition), - offsetof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition, _asn_ctx), - offsetof(struct E2_E2SM_gNB_NRT_EventTriggerDefinition, present), - sizeof(((struct E2_E2SM_gNB_NRT_EventTriggerDefinition *)0)->present), - asn_MAP_E2_E2SM_gNB_NRT_EventTriggerDefinition_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition = { - "E2SM-gNB-NRT-EventTriggerDefinition", - "E2SM-gNB-NRT-EventTriggerDefinition", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_NRT_EventTriggerDefinition_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_EventTriggerDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_EventTriggerDefinition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition.h deleted file mode 100644 index c6840da..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-EventTriggerDefinition.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_EventTriggerDefinition_H_ -#define _E2_E2SM_gNB_NRT_EventTriggerDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_NRT_EventTriggerDefinition_PR { - E2_E2SM_gNB_NRT_EventTriggerDefinition_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_NRT_EventTriggerDefinition_PR_eventDefinition_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_NRT_EventTriggerDefinition_PR; - -/* E2_E2SM-gNB-NRT-EventTriggerDefinition */ -typedef struct E2_E2SM_gNB_NRT_EventTriggerDefinition { - E2_E2SM_gNB_NRT_EventTriggerDefinition_PR present; - union E2_E2SM_gNB_NRT_EventTriggerDefinition_u { - E2_E2SM_gNB_NRT_EventTriggerDefinition_Format1_t eventDefinition_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_EventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_EventTriggerDefinition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader-Format1.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader-Format1.c deleted file mode 100644 index 1c2e597..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader-Format1.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-IndicationHeader-Format1.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_IndicationHeader_Format1_1[] = { - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_NRT_IndicationHeader_Format1, timestamp), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRT_TimeStamp, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "timestamp" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_NRT_IndicationHeader_Format1_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* timestamp */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_IndicationHeader_Format1_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_IndicationHeader_Format1), - offsetof(struct E2_E2SM_gNB_NRT_IndicationHeader_Format1, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_NRT_IndicationHeader_Format1_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1 = { - "E2SM-gNB-NRT-IndicationHeader-Format1", - "E2SM-gNB-NRT-IndicationHeader-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_IndicationHeader_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_IndicationHeader_Format1_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader-Format1.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader-Format1.h deleted file mode 100644 index 139f24e..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader-Format1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_IndicationHeader_Format1_H_ -#define _E2_E2SM_gNB_NRT_IndicationHeader_Format1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_NRT-TimeStamp.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-NRT-IndicationHeader-Format1 */ -typedef struct E2_E2SM_gNB_NRT_IndicationHeader_Format1 { - E2_NRT_TimeStamp_t *timestamp; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_IndicationHeader_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_IndicationHeader_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_IndicationHeader_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_IndicationHeader_Format1_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader.c deleted file mode 100644 index 4ec7901..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-IndicationHeader.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_NRT_IndicationHeader_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_IndicationHeader_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_IndicationHeader, choice.indicationHeader_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationHeader-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_IndicationHeader_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_IndicationHeader_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_IndicationHeader), - offsetof(struct E2_E2SM_gNB_NRT_IndicationHeader, _asn_ctx), - offsetof(struct E2_E2SM_gNB_NRT_IndicationHeader, present), - sizeof(((struct E2_E2SM_gNB_NRT_IndicationHeader *)0)->present), - asn_MAP_E2_E2SM_gNB_NRT_IndicationHeader_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader = { - "E2SM-gNB-NRT-IndicationHeader", - "E2SM-gNB-NRT-IndicationHeader", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_NRT_IndicationHeader_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_IndicationHeader_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_IndicationHeader_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader.h deleted file mode 100644 index 38c803a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationHeader.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_IndicationHeader_H_ -#define _E2_E2SM_gNB_NRT_IndicationHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-NRT-IndicationHeader-Format1.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_NRT_IndicationHeader_PR { - E2_E2SM_gNB_NRT_IndicationHeader_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_NRT_IndicationHeader_PR_indicationHeader_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_NRT_IndicationHeader_PR; - -/* E2_E2SM-gNB-NRT-IndicationHeader */ -typedef struct E2_E2SM_gNB_NRT_IndicationHeader { - E2_E2SM_gNB_NRT_IndicationHeader_PR present; - union E2_E2SM_gNB_NRT_IndicationHeader_u { - E2_E2SM_gNB_NRT_IndicationHeader_Format1_t indicationHeader_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_IndicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationHeader; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_IndicationHeader_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage-Format1.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage-Format1.c deleted file mode 100644 index a0d92d6..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage-Format1.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-IndicationMessage-Format1.h" - -#include "E2_NRT-Record-List-item.h" -static int -memb_E2_nrt_Record_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 16384)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_nrt_Record_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_nrt_Record_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_nrt_Record_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_NRT_Record_List_item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_nrt_Record_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_nrt_Record_List_specs_2 = { - sizeof(struct E2_E2SM_gNB_NRT_IndicationMessage_Format1__nrt_Record_List), - offsetof(struct E2_E2SM_gNB_NRT_IndicationMessage_Format1__nrt_Record_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_nrt_Record_List_2 = { - "nrt-Record-List", - "nrt-Record-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_nrt_Record_List_tags_2, - sizeof(asn_DEF_E2_nrt_Record_List_tags_2) - /sizeof(asn_DEF_E2_nrt_Record_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_E2_nrt_Record_List_tags_2, /* Same as above */ - sizeof(asn_DEF_E2_nrt_Record_List_tags_2) - /sizeof(asn_DEF_E2_nrt_Record_List_tags_2[0]), /* 2 */ - { 0, &asn_PER_type_E2_nrt_Record_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_E2_nrt_Record_List_2, - 1, /* Single element */ - &asn_SPC_E2_nrt_Record_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_IndicationMessage_Format1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_IndicationMessage_Format1, nrt_Record_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_E2_nrt_Record_List_2, - 0, - { 0, &asn_PER_memb_E2_nrt_Record_List_constr_2, memb_E2_nrt_Record_List_constraint_1 }, - 0, 0, /* No default value */ - "nrt-Record-List" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nrt-Record-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_IndicationMessage_Format1_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_IndicationMessage_Format1), - offsetof(struct E2_E2SM_gNB_NRT_IndicationMessage_Format1, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1 = { - "E2SM-gNB-NRT-IndicationMessage-Format1", - "E2SM-gNB-NRT-IndicationMessage-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_IndicationMessage_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_IndicationMessage_Format1_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage-Format1.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage-Format1.h deleted file mode 100644 index 98b7bd5..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage-Format1.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_IndicationMessage_Format1_H_ -#define _E2_E2SM_gNB_NRT_IndicationMessage_Format1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_NRT_Record_List_item; - -/* E2_E2SM-gNB-NRT-IndicationMessage-Format1 */ -typedef struct E2_E2SM_gNB_NRT_IndicationMessage_Format1 { - struct E2_E2SM_gNB_NRT_IndicationMessage_Format1__nrt_Record_List { - A_SEQUENCE_OF(struct E2_NRT_Record_List_item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } nrt_Record_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_IndicationMessage_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_IndicationMessage_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_IndicationMessage_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_IndicationMessage_Format1_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage.c deleted file mode 100644 index 146fac9..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-IndicationMessage.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_NRT_IndicationMessage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_IndicationMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_IndicationMessage, choice.indicationMessage_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationMessage-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_IndicationMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_IndicationMessage_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_IndicationMessage), - offsetof(struct E2_E2SM_gNB_NRT_IndicationMessage, _asn_ctx), - offsetof(struct E2_E2SM_gNB_NRT_IndicationMessage, present), - sizeof(((struct E2_E2SM_gNB_NRT_IndicationMessage *)0)->present), - asn_MAP_E2_E2SM_gNB_NRT_IndicationMessage_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage = { - "E2SM-gNB-NRT-IndicationMessage", - "E2SM-gNB-NRT-IndicationMessage", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_NRT_IndicationMessage_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_IndicationMessage_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_IndicationMessage_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage.h deleted file mode 100644 index b23c2e8..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-IndicationMessage.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_IndicationMessage_H_ -#define _E2_E2SM_gNB_NRT_IndicationMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-NRT-IndicationMessage-Format1.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_NRT_IndicationMessage_PR { - E2_E2SM_gNB_NRT_IndicationMessage_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_NRT_IndicationMessage_PR_indicationMessage_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_NRT_IndicationMessage_PR; - -/* E2_E2SM-gNB-NRT-IndicationMessage */ -typedef struct E2_E2SM_gNB_NRT_IndicationMessage { - E2_E2SM_gNB_NRT_IndicationMessage_PR present; - union E2_E2SM_gNB_NRT_IndicationMessage_u { - E2_E2SM_gNB_NRT_IndicationMessage_Format1_t indicationMessage_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_IndicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_IndicationMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_IndicationMessage_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-RANfunction-Definition.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-RANfunction-Definition.c deleted file mode 100644 index da5d7da..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-RANfunction-Definition.c +++ /dev/null @@ -1,472 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-NRT-RANfunction-Definition.h" - -#include "E2_RIC-EventTriggerStyle-List.h" -#include "E2_RIC-ReportStyle-List.h" -#include "E2_RIC-InsertStyle-List.h" -#include "E2_RIC-ControlStyle-List.h" -#include "E2_RIC-PolicyStyle-List.h" -static int -memb_E2_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_InsertStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_ControlStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_PolicyStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_ReportStyle_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_InsertStyle_List_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_ControlStyle_List_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_PolicyStyle_List_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_ReportStyle_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_InsertStyle_List_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_ControlStyle_List_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_PolicyStyle_List_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_EventTriggerStyle_List_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_EventTriggerStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_EventTriggerStyle_List_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_EventTriggerStyle_List_specs_3 = { - sizeof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_EventTriggerStyle_List), - offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_EventTriggerStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_EventTriggerStyle_List_3 = { - "ric-EventTriggerStyle-List", - "ric-EventTriggerStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_EventTriggerStyle_List_tags_3, - sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3) - /sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */ - asn_DEF_E2_ric_EventTriggerStyle_List_tags_3, /* Same as above */ - sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3) - /sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_EventTriggerStyle_List_3, - 1, /* Single element */ - &asn_SPC_E2_ric_EventTriggerStyle_List_specs_3 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_ReportStyle_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_ReportStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_ReportStyle_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_ReportStyle_List_specs_5 = { - sizeof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_ReportStyle_List), - offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_ReportStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_ReportStyle_List_5 = { - "ric-ReportStyle-List", - "ric-ReportStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_ReportStyle_List_tags_5, - sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_ReportStyle_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_ReportStyle_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_ReportStyle_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_ReportStyle_List_specs_5 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_InsertStyle_List_7[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_InsertStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_InsertStyle_List_tags_7[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_InsertStyle_List_specs_7 = { - sizeof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_InsertStyle_List), - offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_InsertStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_InsertStyle_List_7 = { - "ric-InsertStyle-List", - "ric-InsertStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_InsertStyle_List_tags_7, - sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7) - /sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7[0]) - 1, /* 1 */ - asn_DEF_E2_ric_InsertStyle_List_tags_7, /* Same as above */ - sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7) - /sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_InsertStyle_List_constr_7, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_InsertStyle_List_7, - 1, /* Single element */ - &asn_SPC_E2_ric_InsertStyle_List_specs_7 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_ControlStyle_List_9[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_ControlStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_ControlStyle_List_tags_9[] = { - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_ControlStyle_List_specs_9 = { - sizeof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_ControlStyle_List), - offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_ControlStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_ControlStyle_List_9 = { - "ric-ControlStyle-List", - "ric-ControlStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_ControlStyle_List_tags_9, - sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9) - /sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9[0]) - 1, /* 1 */ - asn_DEF_E2_ric_ControlStyle_List_tags_9, /* Same as above */ - sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9) - /sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_ControlStyle_List_constr_9, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_ControlStyle_List_9, - 1, /* Single element */ - &asn_SPC_E2_ric_ControlStyle_List_specs_9 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_PolicyStyle_List_11[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_PolicyStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_PolicyStyle_List_tags_11[] = { - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_PolicyStyle_List_specs_11 = { - sizeof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_PolicyStyle_List), - offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_PolicyStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_PolicyStyle_List_11 = { - "ric-PolicyStyle-List", - "ric-PolicyStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_PolicyStyle_List_tags_11, - sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11) - /sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11[0]) - 1, /* 1 */ - asn_DEF_E2_ric_PolicyStyle_List_tags_11, /* Same as above */ - sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11) - /sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_PolicyStyle_List_constr_11, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_PolicyStyle_List_11, - 1, /* Single element */ - &asn_SPC_E2_ric_PolicyStyle_List_specs_11 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_NRT_RANfunction_Definition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, ranFunction_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANfunction_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Name" - }, - { ATF_POINTER, 5, offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, ric_EventTriggerStyle_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_E2_ric_EventTriggerStyle_List_3, - 0, - { 0, &asn_PER_memb_E2_ric_EventTriggerStyle_List_constr_3, memb_E2_ric_EventTriggerStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-List" - }, - { ATF_POINTER, 4, offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, ric_ReportStyle_List), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - 0, - &asn_DEF_E2_ric_ReportStyle_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_ReportStyle_List_constr_5, memb_E2_ric_ReportStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-ReportStyle-List" - }, - { ATF_POINTER, 3, offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, ric_InsertStyle_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_InsertStyle_List_7, - 0, - { 0, &asn_PER_memb_E2_ric_InsertStyle_List_constr_7, memb_E2_ric_InsertStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-InsertStyle-List" - }, - { ATF_POINTER, 2, offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, ric_ControlStyle_List), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - 0, - &asn_DEF_E2_ric_ControlStyle_List_9, - 0, - { 0, &asn_PER_memb_E2_ric_ControlStyle_List_constr_9, memb_E2_ric_ControlStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-ControlStyle-List" - }, - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, ric_PolicyStyle_List), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - 0, - &asn_DEF_E2_ric_PolicyStyle_List_11, - 0, - { 0, &asn_PER_memb_E2_ric_PolicyStyle_List_constr_11, memb_E2_ric_PolicyStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-PolicyStyle-List" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_NRT_RANfunction_Definition_oms_1[] = { 1, 2, 3, 4, 5 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_NRT_RANfunction_Definition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-InsertStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-ControlStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-PolicyStyle-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_NRT_RANfunction_Definition_specs_1 = { - sizeof(struct E2_E2SM_gNB_NRT_RANfunction_Definition), - offsetof(struct E2_E2SM_gNB_NRT_RANfunction_Definition, _asn_ctx), - asn_MAP_E2_E2SM_gNB_NRT_RANfunction_Definition_tag2el_1, - 6, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_NRT_RANfunction_Definition_oms_1, /* Optional members */ - 5, 0, /* Root/Additions */ - 6, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition = { - "E2SM-gNB-NRT-RANfunction-Definition", - "E2SM-gNB-NRT-RANfunction-Definition", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_NRT_RANfunction_Definition_1, - 6, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_NRT_RANfunction_Definition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-RANfunction-Definition.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-RANfunction-Definition.h deleted file mode 100644 index 69eece7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_E2SM-gNB-NRT-RANfunction-Definition.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_NRT_RANfunction_Definition_H_ -#define _E2_E2SM_gNB_NRT_RANfunction_Definition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANfunction-Name.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RIC_EventTriggerStyle_List; -struct E2_RIC_ReportStyle_List; -struct E2_RIC_InsertStyle_List; -struct E2_RIC_ControlStyle_List; -struct E2_RIC_PolicyStyle_List; - -/* E2_E2SM-gNB-NRT-RANfunction-Definition */ -typedef struct E2_E2SM_gNB_NRT_RANfunction_Definition { - E2_RANfunction_Name_t ranFunction_Name; - struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_EventTriggerStyle_List { - A_SEQUENCE_OF(struct E2_RIC_EventTriggerStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_EventTriggerStyle_List; - struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_ReportStyle_List { - A_SEQUENCE_OF(struct E2_RIC_ReportStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_ReportStyle_List; - struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_InsertStyle_List { - A_SEQUENCE_OF(struct E2_RIC_InsertStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_InsertStyle_List; - struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_ControlStyle_List { - A_SEQUENCE_OF(struct E2_RIC_ControlStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_ControlStyle_List; - struct E2_E2SM_gNB_NRT_RANfunction_Definition__ric_PolicyStyle_List { - A_SEQUENCE_OF(struct E2_RIC_PolicyStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_PolicyStyle_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_NRT_RANfunction_Definition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_NRT_RANfunction_Definition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_NRT_RANfunction_Definition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_ECGI.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_ECGI.c deleted file mode 100644 index 88ea36d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_ECGI.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ECGI.h" - -asn_TYPE_member_t asn_MBR_E2_ECGI_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_ECGI, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ECGI, eUTRANcellIdentifier), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_EUTRANCellIdentifier, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eUTRANcellIdentifier" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ECGI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_ECGI_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRANcellIdentifier */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_ECGI_specs_1 = { - sizeof(struct E2_ECGI), - offsetof(struct E2_ECGI, _asn_ctx), - asn_MAP_E2_ECGI_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_ECGI = { - "ECGI", - "ECGI", - &asn_OP_SEQUENCE, - asn_DEF_E2_ECGI_tags_1, - sizeof(asn_DEF_E2_ECGI_tags_1) - /sizeof(asn_DEF_E2_ECGI_tags_1[0]), /* 1 */ - asn_DEF_E2_ECGI_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_ECGI_tags_1) - /sizeof(asn_DEF_E2_ECGI_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_ECGI_1, - 2, /* Elements count */ - &asn_SPC_E2_ECGI_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_ECGI.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_ECGI.h deleted file mode 100644 index 868ea7e..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_ECGI.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ECGI_H_ -#define _E2_ECGI_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_PLMN-Identity.h" -#include "E2_EUTRANCellIdentifier.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_ECGI */ -typedef struct E2_ECGI { - E2_PLMN_Identity_t pLMN_Identity; - E2_EUTRANCellIdentifier_t eUTRANcellIdentifier; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_ECGI_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_ECGI; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_ECGI_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_ECGI_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ECGI_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_EUTRANCellIdentifier.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_EUTRANCellIdentifier.c deleted file mode 100644 index b31711d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_EUTRANCellIdentifier.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_EUTRANCellIdentifier.h" - -int -E2_EUTRANCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 28)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using BIT_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_EUTRANCellIdentifier_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_EUTRANCellIdentifier_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_EUTRANCellIdentifier = { - "EUTRANCellIdentifier", - "EUTRANCellIdentifier", - &asn_OP_BIT_STRING, - asn_DEF_E2_EUTRANCellIdentifier_tags_1, - sizeof(asn_DEF_E2_EUTRANCellIdentifier_tags_1) - /sizeof(asn_DEF_E2_EUTRANCellIdentifier_tags_1[0]), /* 1 */ - asn_DEF_E2_EUTRANCellIdentifier_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_EUTRANCellIdentifier_tags_1) - /sizeof(asn_DEF_E2_EUTRANCellIdentifier_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_EUTRANCellIdentifier_constr_1, E2_EUTRANCellIdentifier_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_EUTRANCellIdentifier.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_EUTRANCellIdentifier.h deleted file mode 100644 index 98a29d3..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_EUTRANCellIdentifier.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_EUTRANCellIdentifier_H_ -#define _E2_EUTRANCellIdentifier_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_EUTRANCellIdentifier */ -typedef BIT_STRING_t E2_EUTRANCellIdentifier_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_EUTRANCellIdentifier_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_EUTRANCellIdentifier; -asn_struct_free_f E2_EUTRANCellIdentifier_free; -asn_struct_print_f E2_EUTRANCellIdentifier_print; -asn_constr_check_f E2_EUTRANCellIdentifier_constraint; -ber_type_decoder_f E2_EUTRANCellIdentifier_decode_ber; -der_type_encoder_f E2_EUTRANCellIdentifier_encode_der; -xer_type_decoder_f E2_EUTRANCellIdentifier_decode_xer; -xer_type_encoder_f E2_EUTRANCellIdentifier_encode_xer; -per_type_decoder_f E2_EUTRANCellIdentifier_decode_uper; -per_type_encoder_f E2_EUTRANCellIdentifier_encode_uper; -per_type_decoder_f E2_EUTRANCellIdentifier_decode_aper; -per_type_encoder_f E2_EUTRANCellIdentifier_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_EUTRANCellIdentifier_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCGI.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCGI.c deleted file mode 100644 index 531b52d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCGI.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRCGI.h" - -asn_TYPE_member_t asn_MBR_E2_NRCGI_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_NRCGI, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_NRCGI, nRcellIdentifier), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRCellIdentifier, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRcellIdentifier" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_NRCGI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_NRCGI_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRcellIdentifier */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_NRCGI_specs_1 = { - sizeof(struct E2_NRCGI), - offsetof(struct E2_NRCGI, _asn_ctx), - asn_MAP_E2_NRCGI_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRCGI = { - "NRCGI", - "NRCGI", - &asn_OP_SEQUENCE, - asn_DEF_E2_NRCGI_tags_1, - sizeof(asn_DEF_E2_NRCGI_tags_1) - /sizeof(asn_DEF_E2_NRCGI_tags_1[0]), /* 1 */ - asn_DEF_E2_NRCGI_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRCGI_tags_1) - /sizeof(asn_DEF_E2_NRCGI_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_NRCGI_1, - 2, /* Elements count */ - &asn_SPC_E2_NRCGI_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCGI.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCGI.h deleted file mode 100644 index 72a1108..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCGI.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRCGI_H_ -#define _E2_NRCGI_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_PLMN-Identity.h" -#include "E2_NRCellIdentifier.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_NRCGI */ -typedef struct E2_NRCGI { - E2_PLMN_Identity_t pLMN_Identity; - E2_NRCellIdentifier_t nRcellIdentifier; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_NRCGI_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_NRCGI; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_NRCGI_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_NRCGI_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRCGI_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCellIdentifier.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCellIdentifier.c deleted file mode 100644 index b8177b7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCellIdentifier.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRCellIdentifier.h" - -int -E2_NRCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 36)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using BIT_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_NRCellIdentifier_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_NRCellIdentifier_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRCellIdentifier = { - "NRCellIdentifier", - "NRCellIdentifier", - &asn_OP_BIT_STRING, - asn_DEF_E2_NRCellIdentifier_tags_1, - sizeof(asn_DEF_E2_NRCellIdentifier_tags_1) - /sizeof(asn_DEF_E2_NRCellIdentifier_tags_1[0]), /* 1 */ - asn_DEF_E2_NRCellIdentifier_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRCellIdentifier_tags_1) - /sizeof(asn_DEF_E2_NRCellIdentifier_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_NRCellIdentifier_constr_1, E2_NRCellIdentifier_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCellIdentifier.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCellIdentifier.h deleted file mode 100644 index af39f4b..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRCellIdentifier.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRCellIdentifier_H_ -#define _E2_NRCellIdentifier_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_NRCellIdentifier */ -typedef BIT_STRING_t E2_NRCellIdentifier_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_NRCellIdentifier_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_NRCellIdentifier; -asn_struct_free_f E2_NRCellIdentifier_free; -asn_struct_print_f E2_NRCellIdentifier_print; -asn_constr_check_f E2_NRCellIdentifier_constraint; -ber_type_decoder_f E2_NRCellIdentifier_decode_ber; -der_type_encoder_f E2_NRCellIdentifier_encode_der; -xer_type_decoder_f E2_NRCellIdentifier_decode_xer; -xer_type_encoder_f E2_NRCellIdentifier_encode_xer; -per_type_decoder_f E2_NRCellIdentifier_decode_uper; -per_type_encoder_f E2_NRCellIdentifier_encode_uper; -per_type_decoder_f E2_NRCellIdentifier_decode_aper; -per_type_encoder_f E2_NRCellIdentifier_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRCellIdentifier_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Cell-ID.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Cell-ID.c deleted file mode 100644 index 7deeacf..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Cell-ID.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-Cell-ID.h" - -asn_per_constraints_t asn_PER_type_E2_NRT_Cell_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_NRT_Cell_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_NRT_Cell_ID, choice.ecgi), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_ECGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ecgi" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_NRT_Cell_ID, choice.nrcgi), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nrcgi" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_NRT_Cell_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecgi */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrcgi */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_NRT_Cell_ID_specs_1 = { - sizeof(struct E2_NRT_Cell_ID), - offsetof(struct E2_NRT_Cell_ID, _asn_ctx), - offsetof(struct E2_NRT_Cell_ID, present), - sizeof(((struct E2_NRT_Cell_ID *)0)->present), - asn_MAP_E2_NRT_Cell_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_Cell_ID = { - "NRT-Cell-ID", - "NRT-Cell-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_NRT_Cell_ID_constr_1, CHOICE_constraint }, - asn_MBR_E2_NRT_Cell_ID_1, - 2, /* Elements count */ - &asn_SPC_E2_NRT_Cell_ID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Cell-ID.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Cell-ID.h deleted file mode 100644 index 1d98d9e..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Cell-ID.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_Cell_ID_H_ -#define _E2_NRT_Cell_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_ECGI.h" -#include "E2_NRCGI.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_NRT_Cell_ID_PR { - E2_NRT_Cell_ID_PR_NOTHING, /* No components present */ - E2_NRT_Cell_ID_PR_ecgi, - E2_NRT_Cell_ID_PR_nrcgi - /* Extensions may appear below */ - -} E2_NRT_Cell_ID_PR; - -/* E2_NRT-Cell-ID */ -typedef struct E2_NRT_Cell_ID { - E2_NRT_Cell_ID_PR present; - union E2_NRT_Cell_ID_u { - E2_ECGI_t ecgi; - E2_NRCGI_t nrcgi; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_NRT_Cell_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_Cell_ID; -extern asn_CHOICE_specifics_t asn_SPC_E2_NRT_Cell_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_NRT_Cell_ID_1[2]; -extern asn_per_constraints_t asn_PER_type_E2_NRT_Cell_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_Cell_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-ControlCommand.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-ControlCommand.c deleted file mode 100644 index 5c6c87b..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-ControlCommand.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-ControlCommand.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_NRT_ControlCommand_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_NRT_ControlCommand_value2enum_1[] = { - { 0, 8, "addition" }, - { 1, 8, "deletion" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_NRT_ControlCommand_enum2value_1[] = { - 0, /* addition(0) */ - 1 /* deletion(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_NRT_ControlCommand_specs_1 = { - asn_MAP_E2_NRT_ControlCommand_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_NRT_ControlCommand_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_NRT_ControlCommand_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_ControlCommand = { - "NRT-ControlCommand", - "NRT-ControlCommand", - &asn_OP_NativeEnumerated, - asn_DEF_E2_NRT_ControlCommand_tags_1, - sizeof(asn_DEF_E2_NRT_ControlCommand_tags_1) - /sizeof(asn_DEF_E2_NRT_ControlCommand_tags_1[0]), /* 1 */ - asn_DEF_E2_NRT_ControlCommand_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRT_ControlCommand_tags_1) - /sizeof(asn_DEF_E2_NRT_ControlCommand_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_NRT_ControlCommand_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_NRT_ControlCommand_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-ControlCommand.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-ControlCommand.h deleted file mode 100644 index e9319ed..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-ControlCommand.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_ControlCommand_H_ -#define _E2_NRT_ControlCommand_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_NRT_ControlCommand { - E2_NRT_ControlCommand_addition = 0, - E2_NRT_ControlCommand_deletion = 1 - /* - * Enumeration is extensible - */ -} e_E2_NRT_ControlCommand; - -/* E2_NRT-ControlCommand */ -typedef long E2_NRT_ControlCommand_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_NRT_ControlCommand_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_ControlCommand; -extern const asn_INTEGER_specifics_t asn_SPC_NRT_ControlCommand_specs_1; -asn_struct_free_f NRT_ControlCommand_free; -asn_struct_print_f NRT_ControlCommand_print; -asn_constr_check_f NRT_ControlCommand_constraint; -ber_type_decoder_f NRT_ControlCommand_decode_ber; -der_type_encoder_f NRT_ControlCommand_encode_der; -xer_type_decoder_f NRT_ControlCommand_decode_xer; -xer_type_encoder_f NRT_ControlCommand_encode_xer; -per_type_decoder_f NRT_ControlCommand_decode_uper; -per_type_encoder_f NRT_ControlCommand_encode_uper; -per_type_decoder_f NRT_ControlCommand_decode_aper; -per_type_encoder_f NRT_ControlCommand_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_ControlCommand_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-List-item.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-List-item.c deleted file mode 100644 index bd0d5bb..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-List-item.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-Record-List-item.h" - -#include "E2_NRT-Record-row-item.h" -static int -memb_E2_nrt_Record_row_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 1024)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_nrt_Record_row_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_nrt_Record_row_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_nrt_Record_row_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_NRT_Record_row_item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_nrt_Record_row_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_nrt_Record_row_specs_3 = { - sizeof(struct E2_NRT_Record_List_item__nrt_Record_row), - offsetof(struct E2_NRT_Record_List_item__nrt_Record_row, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_nrt_Record_row_3 = { - "nrt-Record-row", - "nrt-Record-row", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_nrt_Record_row_tags_3, - sizeof(asn_DEF_E2_nrt_Record_row_tags_3) - /sizeof(asn_DEF_E2_nrt_Record_row_tags_3[0]) - 1, /* 1 */ - asn_DEF_E2_nrt_Record_row_tags_3, /* Same as above */ - sizeof(asn_DEF_E2_nrt_Record_row_tags_3) - /sizeof(asn_DEF_E2_nrt_Record_row_tags_3[0]), /* 2 */ - { 0, &asn_PER_type_E2_nrt_Record_row_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_E2_nrt_Record_row_3, - 1, /* Single element */ - &asn_SPC_E2_nrt_Record_row_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_NRT_Record_List_item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_NRT_Record_List_item, servedCellID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_NRT_Cell_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "servedCellID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_NRT_Record_List_item, nrt_Record_row), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_E2_nrt_Record_row_3, - 0, - { 0, &asn_PER_memb_E2_nrt_Record_row_constr_3, memb_E2_nrt_Record_row_constraint_1 }, - 0, 0, /* No default value */ - "nrt-Record-row" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_NRT_Record_List_item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_NRT_Record_List_item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedCellID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrt-Record-row */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_NRT_Record_List_item_specs_1 = { - sizeof(struct E2_NRT_Record_List_item), - offsetof(struct E2_NRT_Record_List_item, _asn_ctx), - asn_MAP_E2_NRT_Record_List_item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_Record_List_item = { - "NRT-Record-List-item", - "NRT-Record-List-item", - &asn_OP_SEQUENCE, - asn_DEF_E2_NRT_Record_List_item_tags_1, - sizeof(asn_DEF_E2_NRT_Record_List_item_tags_1) - /sizeof(asn_DEF_E2_NRT_Record_List_item_tags_1[0]), /* 1 */ - asn_DEF_E2_NRT_Record_List_item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRT_Record_List_item_tags_1) - /sizeof(asn_DEF_E2_NRT_Record_List_item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_NRT_Record_List_item_1, - 2, /* Elements count */ - &asn_SPC_E2_NRT_Record_List_item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-List-item.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-List-item.h deleted file mode 100644 index 091ef70..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-List-item.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_Record_List_item_H_ -#define _E2_NRT_Record_List_item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_NRT-Cell-ID.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_NRT_Record_row_item; - -/* E2_NRT-Record-List-item */ -typedef struct E2_NRT_Record_List_item { - E2_NRT_Cell_ID_t servedCellID; - struct E2_NRT_Record_List_item__nrt_Record_row { - A_SEQUENCE_OF(struct E2_NRT_Record_row_item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } nrt_Record_row; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_NRT_Record_List_item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_Record_List_item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_NRT_Record_List_item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_NRT_Record_List_item_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_Record_List_item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-row-item.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-row-item.c deleted file mode 100644 index 7fcfe67..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-row-item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-Record-row-item.h" - -asn_TYPE_member_t asn_MBR_E2_NRT_Record_row_item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_NRT_Record_row_item, neighbourCellID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_NRT_Cell_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "neighbourCellID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_NRT_Record_row_item, nrt_Record), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_NRT_TableRecord, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nrt-Record" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_NRT_Record_row_item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_NRT_Record_row_item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* neighbourCellID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrt-Record */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_NRT_Record_row_item_specs_1 = { - sizeof(struct E2_NRT_Record_row_item), - offsetof(struct E2_NRT_Record_row_item, _asn_ctx), - asn_MAP_E2_NRT_Record_row_item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_Record_row_item = { - "NRT-Record-row-item", - "NRT-Record-row-item", - &asn_OP_SEQUENCE, - asn_DEF_E2_NRT_Record_row_item_tags_1, - sizeof(asn_DEF_E2_NRT_Record_row_item_tags_1) - /sizeof(asn_DEF_E2_NRT_Record_row_item_tags_1[0]), /* 1 */ - asn_DEF_E2_NRT_Record_row_item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRT_Record_row_item_tags_1) - /sizeof(asn_DEF_E2_NRT_Record_row_item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_NRT_Record_row_item_1, - 2, /* Elements count */ - &asn_SPC_E2_NRT_Record_row_item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-row-item.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-row-item.h deleted file mode 100644 index 3032ede..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-Record-row-item.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_Record_row_item_H_ -#define _E2_NRT_Record_row_item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_NRT-Cell-ID.h" -#include "E2_NRT-TableRecord.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_NRT-Record-row-item */ -typedef struct E2_NRT_Record_row_item { - E2_NRT_Cell_ID_t neighbourCellID; - E2_NRT_TableRecord_t nrt_Record; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_NRT_Record_row_item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_Record_row_item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_NRT_Record_row_item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_NRT_Record_row_item_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_Record_row_item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TableRecord.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TableRecord.c deleted file mode 100644 index 4478172..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TableRecord.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-TableRecord.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_NRT_TableRecord_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_TableRecord = { - "NRT-TableRecord", - "NRT-TableRecord", - &asn_OP_OCTET_STRING, - asn_DEF_E2_NRT_TableRecord_tags_1, - sizeof(asn_DEF_E2_NRT_TableRecord_tags_1) - /sizeof(asn_DEF_E2_NRT_TableRecord_tags_1[0]), /* 1 */ - asn_DEF_E2_NRT_TableRecord_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRT_TableRecord_tags_1) - /sizeof(asn_DEF_E2_NRT_TableRecord_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TableRecord.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TableRecord.h deleted file mode 100644 index bf8ff93..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TableRecord.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_TableRecord_H_ -#define _E2_NRT_TableRecord_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_NRT-TableRecord */ -typedef OCTET_STRING_t E2_NRT_TableRecord_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_TableRecord; -asn_struct_free_f E2_NRT_TableRecord_free; -asn_struct_print_f E2_NRT_TableRecord_print; -asn_constr_check_f E2_NRT_TableRecord_constraint; -ber_type_decoder_f E2_NRT_TableRecord_decode_ber; -der_type_encoder_f E2_NRT_TableRecord_encode_der; -xer_type_decoder_f E2_NRT_TableRecord_decode_xer; -xer_type_encoder_f E2_NRT_TableRecord_encode_xer; -per_type_decoder_f E2_NRT_TableRecord_decode_uper; -per_type_encoder_f E2_NRT_TableRecord_encode_uper; -per_type_decoder_f E2_NRT_TableRecord_decode_aper; -per_type_encoder_f E2_NRT_TableRecord_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_TableRecord_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TimeStamp.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TimeStamp.c deleted file mode 100644 index 9a7551a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TimeStamp.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-TimeStamp.h" - -int -E2_NRT_TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 8)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_NRT_TimeStamp_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_NRT_TimeStamp_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_TimeStamp = { - "NRT-TimeStamp", - "NRT-TimeStamp", - &asn_OP_OCTET_STRING, - asn_DEF_E2_NRT_TimeStamp_tags_1, - sizeof(asn_DEF_E2_NRT_TimeStamp_tags_1) - /sizeof(asn_DEF_E2_NRT_TimeStamp_tags_1[0]), /* 1 */ - asn_DEF_E2_NRT_TimeStamp_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRT_TimeStamp_tags_1) - /sizeof(asn_DEF_E2_NRT_TimeStamp_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_NRT_TimeStamp_constr_1, E2_NRT_TimeStamp_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TimeStamp.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TimeStamp.h deleted file mode 100644 index 5bf14d9..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TimeStamp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_TimeStamp_H_ -#define _E2_NRT_TimeStamp_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_NRT-TimeStamp */ -typedef OCTET_STRING_t E2_NRT_TimeStamp_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_NRT_TimeStamp_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_TimeStamp; -asn_struct_free_f E2_NRT_TimeStamp_free; -asn_struct_print_f E2_NRT_TimeStamp_print; -asn_constr_check_f E2_NRT_TimeStamp_constraint; -ber_type_decoder_f E2_NRT_TimeStamp_decode_ber; -der_type_encoder_f E2_NRT_TimeStamp_encode_der; -xer_type_decoder_f E2_NRT_TimeStamp_decode_xer; -xer_type_encoder_f E2_NRT_TimeStamp_encode_xer; -per_type_decoder_f E2_NRT_TimeStamp_decode_uper; -per_type_encoder_f E2_NRT_TimeStamp_encode_uper; -per_type_decoder_f E2_NRT_TimeStamp_decode_aper; -per_type_encoder_f E2_NRT_TimeStamp_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_TimeStamp_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TriggerNature.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TriggerNature.c deleted file mode 100644 index 14cb4e3..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TriggerNature.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_NRT-TriggerNature.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_NRT_TriggerNature_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_NRT_TriggerNature_value2enum_1[] = { - { 0, 3, "now" }, - { 1, 8, "onchange" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_NRT_TriggerNature_enum2value_1[] = { - 0, /* now(0) */ - 1 /* onchange(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_NRT_TriggerNature_specs_1 = { - asn_MAP_E2_NRT_TriggerNature_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_NRT_TriggerNature_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_NRT_TriggerNature_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_NRT_TriggerNature = { - "NRT-TriggerNature", - "NRT-TriggerNature", - &asn_OP_NativeEnumerated, - asn_DEF_E2_NRT_TriggerNature_tags_1, - sizeof(asn_DEF_E2_NRT_TriggerNature_tags_1) - /sizeof(asn_DEF_E2_NRT_TriggerNature_tags_1[0]), /* 1 */ - asn_DEF_E2_NRT_TriggerNature_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_NRT_TriggerNature_tags_1) - /sizeof(asn_DEF_E2_NRT_TriggerNature_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_NRT_TriggerNature_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_NRT_TriggerNature_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TriggerNature.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TriggerNature.h deleted file mode 100644 index d895902..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_NRT-TriggerNature.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_NRT_TriggerNature_H_ -#define _E2_NRT_TriggerNature_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_NRT_TriggerNature { - E2_NRT_TriggerNature_now = 0, - E2_NRT_TriggerNature_onchange = 1 - /* - * Enumeration is extensible - */ -} e_E2_NRT_TriggerNature; - -/* E2_NRT-TriggerNature */ -typedef long E2_NRT_TriggerNature_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_NRT_TriggerNature_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_NRT_TriggerNature; -extern const asn_INTEGER_specifics_t asn_SPC_NRT_TriggerNature_specs_1; -asn_struct_free_f NRT_TriggerNature_free; -asn_struct_print_f NRT_TriggerNature_print; -asn_constr_check_f NRT_TriggerNature_constraint; -ber_type_decoder_f NRT_TriggerNature_decode_ber; -der_type_encoder_f NRT_TriggerNature_encode_der; -xer_type_decoder_f NRT_TriggerNature_decode_xer; -xer_type_encoder_f NRT_TriggerNature_encode_xer; -per_type_decoder_f NRT_TriggerNature_decode_uper; -per_type_encoder_f NRT_TriggerNature_encode_uper; -per_type_decoder_f NRT_TriggerNature_decode_aper; -per_type_encoder_f NRT_TriggerNature_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_NRT_TriggerNature_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_PLMN-Identity.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_PLMN-Identity.c deleted file mode 100644 index 51d8ffd..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_PLMN-Identity.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_PLMN-Identity.h" - -int -E2_PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_PLMN_Identity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_PLMN_Identity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_PLMN_Identity = { - "PLMN-Identity", - "PLMN-Identity", - &asn_OP_OCTET_STRING, - asn_DEF_E2_PLMN_Identity_tags_1, - sizeof(asn_DEF_E2_PLMN_Identity_tags_1) - /sizeof(asn_DEF_E2_PLMN_Identity_tags_1[0]), /* 1 */ - asn_DEF_E2_PLMN_Identity_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_PLMN_Identity_tags_1) - /sizeof(asn_DEF_E2_PLMN_Identity_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_PLMN_Identity_constr_1, E2_PLMN_Identity_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_PLMN-Identity.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_PLMN-Identity.h deleted file mode 100644 index 3a18286..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_PLMN-Identity.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_PLMN_Identity_H_ -#define _E2_PLMN_Identity_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_PLMN-Identity */ -typedef OCTET_STRING_t E2_PLMN_Identity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_PLMN_Identity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_PLMN_Identity; -asn_struct_free_f E2_PLMN_Identity_free; -asn_struct_print_f E2_PLMN_Identity_print; -asn_constr_check_f E2_PLMN_Identity_constraint; -ber_type_decoder_f E2_PLMN_Identity_decode_ber; -der_type_encoder_f E2_PLMN_Identity_encode_der; -xer_type_decoder_f E2_PLMN_Identity_decode_xer; -xer_type_encoder_f E2_PLMN_Identity_encode_xer; -per_type_decoder_f E2_PLMN_Identity_decode_uper; -per_type_encoder_f E2_PLMN_Identity_encode_uper; -per_type_decoder_f E2_PLMN_Identity_decode_aper; -per_type_encoder_f E2_PLMN_Identity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_PLMN_Identity_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANfunction-Name.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANfunction-Name.c deleted file mode 100644 index ddf083c..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANfunction-Name.c +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANfunction-Name.h" - -static const int permitted_alphabet_table_2[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_2[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_2(const void *sptr) { - const int *table = permitted_alphabet_table_2; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_3[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_3[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_3(const void *sptr) { - const int *table = permitted_alphabet_table_3; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_4[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_4[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_4(const void *sptr) { - const int *table = permitted_alphabet_table_4; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static int -memb_E2_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_2(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_ranFunction_ShortName_2_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0])) - return -1; - return permitted_alphabet_table_2[value] - 1; -} -static int asn_PER_MAP_E2_ranFunction_ShortName_2_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0])) - return -1; - return permitted_alphabet_code2value_2[code]; -} -static int -memb_E2_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 1000) - && !check_permitted_alphabet_3(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_ranFunction_E2SM_OID_3_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) - return -1; - return permitted_alphabet_table_3[value] - 1; -} -static int asn_PER_MAP_E2_ranFunction_E2SM_OID_3_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) - return -1; - return permitted_alphabet_code2value_3[code]; -} -static int -memb_E2_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_4(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_ranFunction_Description_4_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) - return -1; - return permitted_alphabet_table_4[value] - 1; -} -static int asn_PER_MAP_E2_ranFunction_Description_4_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) - return -1; - return permitted_alphabet_code2value_4[code]; -} -static asn_per_constraints_t asn_PER_memb_E2_ranFunction_ShortName_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_ranFunction_ShortName_2_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_ranFunction_ShortName_2_c2v /* PER code to value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, - asn_PER_MAP_E2_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_ranFunction_E2SM_OID_3_c2v /* PER code to value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranFunction_Description_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_ranFunction_Description_4_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_ranFunction_Description_4_c2v /* PER code to value map */ -}; -asn_TYPE_member_t asn_MBR_E2_RANfunction_Name_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANfunction_Name, ranFunction_ShortName), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, &asn_PER_memb_E2_ranFunction_ShortName_constr_2, memb_E2_ranFunction_ShortName_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-ShortName" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANfunction_Name, ranFunction_E2SM_OID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, &asn_PER_memb_E2_ranFunction_E2SM_OID_constr_3, memb_E2_ranFunction_E2SM_OID_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-E2SM-OID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANfunction_Name, ranFunction_Description), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, &asn_PER_memb_E2_ranFunction_Description_constr_4, memb_E2_ranFunction_Description_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-Description" - }, - { ATF_POINTER, 1, offsetof(struct E2_RANfunction_Name, ranFunction_Instance), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Instance" - }, -}; -static const int asn_MAP_E2_RANfunction_Name_oms_1[] = { 3 }; -static const ber_tlv_tag_t asn_DEF_E2_RANfunction_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANfunction_Name_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANfunction_Name_specs_1 = { - sizeof(struct E2_RANfunction_Name), - offsetof(struct E2_RANfunction_Name, _asn_ctx), - asn_MAP_E2_RANfunction_Name_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_E2_RANfunction_Name_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANfunction_Name = { - "RANfunction-Name", - "RANfunction-Name", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANfunction_Name_tags_1, - sizeof(asn_DEF_E2_RANfunction_Name_tags_1) - /sizeof(asn_DEF_E2_RANfunction_Name_tags_1[0]), /* 1 */ - asn_DEF_E2_RANfunction_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANfunction_Name_tags_1) - /sizeof(asn_DEF_E2_RANfunction_Name_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANfunction_Name_1, - 4, /* Elements count */ - &asn_SPC_E2_RANfunction_Name_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANfunction-Name.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANfunction-Name.h deleted file mode 100644 index 0c8f1e1..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANfunction-Name.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANfunction_Name_H_ -#define _E2_RANfunction_Name_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" -#include "NativeInteger.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANfunction-Name */ -typedef struct E2_RANfunction_Name { - PrintableString_t ranFunction_ShortName; - PrintableString_t ranFunction_E2SM_OID; - PrintableString_t ranFunction_Description; - long *ranFunction_Instance; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANfunction_Name_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANfunction_Name; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANfunction_Name_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANfunction_Name_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANfunction_Name_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-ID.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-ID.c deleted file mode 100644 index d9ffaf3..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameter-ID.h" - -int -E2_RANparameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANparameter_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameter_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_ID = { - "RANparameter-ID", - "RANparameter-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_RANparameter_ID_tags_1, - sizeof(asn_DEF_E2_RANparameter_ID_tags_1) - /sizeof(asn_DEF_E2_RANparameter_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameter_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameter_ID_tags_1) - /sizeof(asn_DEF_E2_RANparameter_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANparameter_ID_constr_1, E2_RANparameter_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-ID.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-ID.h deleted file mode 100644 index 97e0b50..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameter_ID_H_ -#define _E2_RANparameter_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANparameter-ID */ -typedef long E2_RANparameter_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANparameter_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_ID; -asn_struct_free_f E2_RANparameter_ID_free; -asn_struct_print_f E2_RANparameter_ID_print; -asn_constr_check_f E2_RANparameter_ID_constraint; -ber_type_decoder_f E2_RANparameter_ID_decode_ber; -der_type_encoder_f E2_RANparameter_ID_encode_der; -xer_type_decoder_f E2_RANparameter_ID_decode_xer; -xer_type_encoder_f E2_RANparameter_ID_encode_xer; -per_type_decoder_f E2_RANparameter_ID_decode_uper; -per_type_encoder_f E2_RANparameter_ID_encode_uper; -per_type_decoder_f E2_RANparameter_ID_decode_aper; -per_type_encoder_f E2_RANparameter_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameter_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Item.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Item.c deleted file mode 100644 index b9390ff..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameter-Item.h" - -asn_TYPE_member_t asn_MBR_E2_RANparameter_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Item, ranParameter_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANparameter_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Item, ranParameter_Value), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_RANparameter_Value, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameter_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANparameter_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-Value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANparameter_Item_specs_1 = { - sizeof(struct E2_RANparameter_Item), - offsetof(struct E2_RANparameter_Item, _asn_ctx), - asn_MAP_E2_RANparameter_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Item = { - "RANparameter-Item", - "RANparameter-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANparameter_Item_tags_1, - sizeof(asn_DEF_E2_RANparameter_Item_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameter_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameter_Item_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANparameter_Item_1, - 2, /* Elements count */ - &asn_SPC_E2_RANparameter_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Item.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Item.h deleted file mode 100644 index 5fa9292..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameter_Item_H_ -#define _E2_RANparameter_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANparameter-ID.h" -#include "E2_RANparameter-Value.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANparameter-Item */ -typedef struct E2_RANparameter_Item { - E2_RANparameter_ID_t ranParameter_ID; - E2_RANparameter_Value_t ranParameter_Value; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANparameter_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANparameter_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANparameter_Item_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameter_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Name.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Name.c deleted file mode 100644 index 405b9da..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Name.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameter-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -E2_RANparameter_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_RANparameter_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_E2_RANparameter_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANparameter_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_RANparameter_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_RANparameter_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameter_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Name = { - "RANparameter-Name", - "RANparameter-Name", - &asn_OP_PrintableString, - asn_DEF_E2_RANparameter_Name_tags_1, - sizeof(asn_DEF_E2_RANparameter_Name_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Name_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameter_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameter_Name_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Name_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANparameter_Name_constr_1, E2_RANparameter_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Name.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Name.h deleted file mode 100644 index 39d1752..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Name.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameter_Name_H_ -#define _E2_RANparameter_Name_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANparameter-Name */ -typedef PrintableString_t E2_RANparameter_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANparameter_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Name; -asn_struct_free_f E2_RANparameter_Name_free; -asn_struct_print_f E2_RANparameter_Name_print; -asn_constr_check_f E2_RANparameter_Name_constraint; -ber_type_decoder_f E2_RANparameter_Name_decode_ber; -der_type_encoder_f E2_RANparameter_Name_encode_der; -xer_type_decoder_f E2_RANparameter_Name_decode_xer; -xer_type_encoder_f E2_RANparameter_Name_encode_xer; -per_type_decoder_f E2_RANparameter_Name_decode_uper; -per_type_encoder_f E2_RANparameter_Name_encode_uper; -per_type_decoder_f E2_RANparameter_Name_decode_aper; -per_type_encoder_f E2_RANparameter_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameter_Name_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Test.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Test.c deleted file mode 100644 index eb2b83f..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Test.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameter-Test.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_E2_RANparameter_Test_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_RANparameter_Test_value2enum_1[] = { - { 0, 5, "equal" }, - { 1, 11, "greaterthan" }, - { 2, 8, "lessthan" }, - { 3, 8, "contains" }, - { 4, 7, "present" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_RANparameter_Test_enum2value_1[] = { - 3, /* contains(3) */ - 0, /* equal(0) */ - 1, /* greaterthan(1) */ - 2, /* lessthan(2) */ - 4 /* present(4) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_E2_RANparameter_Test_specs_1 = { - asn_MAP_E2_RANparameter_Test_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_RANparameter_Test_enum2value_1, /* N => "tag"; sorted by N */ - 5, /* Number of elements in the maps */ - 6, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameter_Test_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Test = { - "RANparameter-Test", - "RANparameter-Test", - &asn_OP_NativeEnumerated, - asn_DEF_E2_RANparameter_Test_tags_1, - sizeof(asn_DEF_E2_RANparameter_Test_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Test_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameter_Test_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameter_Test_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Test_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANparameter_Test_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_RANparameter_Test_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Test.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Test.h deleted file mode 100644 index 6161987..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Test.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameter_Test_H_ -#define _E2_RANparameter_Test_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_RANparameter_Test { - E2_RANparameter_Test_equal = 0, - E2_RANparameter_Test_greaterthan = 1, - E2_RANparameter_Test_lessthan = 2, - E2_RANparameter_Test_contains = 3, - E2_RANparameter_Test_present = 4 - /* - * Enumeration is extensible - */ -} e_E2_RANparameter_Test; - -/* E2_RANparameter-Test */ -typedef long E2_RANparameter_Test_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Test; -asn_struct_free_f E2_RANparameter_Test_free; -asn_struct_print_f E2_RANparameter_Test_print; -asn_constr_check_f E2_RANparameter_Test_constraint; -ber_type_decoder_f E2_RANparameter_Test_decode_ber; -der_type_encoder_f E2_RANparameter_Test_encode_der; -xer_type_decoder_f E2_RANparameter_Test_decode_xer; -xer_type_encoder_f E2_RANparameter_Test_encode_xer; -per_type_decoder_f E2_RANparameter_Test_decode_uper; -per_type_encoder_f E2_RANparameter_Test_encode_uper; -per_type_decoder_f E2_RANparameter_Test_decode_aper; -per_type_encoder_f E2_RANparameter_Test_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameter_Test_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Type.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Type.c deleted file mode 100644 index 4a130fb..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Type.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameter-Type.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANparameter_Type_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_RANparameter_Type_value2enum_1[] = { - { 0, 7, "integer" }, - { 1, 10, "enumerated" }, - { 2, 7, "boolean" }, - { 3, 10, "bit-string" }, - { 4, 12, "octet-string" }, - { 5, 16, "printable-string" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_RANparameter_Type_enum2value_1[] = { - 3, /* bit-string(3) */ - 2, /* boolean(2) */ - 1, /* enumerated(1) */ - 0, /* integer(0) */ - 4, /* octet-string(4) */ - 5 /* printable-string(5) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_RANparameter_Type_specs_1 = { - asn_MAP_E2_RANparameter_Type_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_RANparameter_Type_enum2value_1, /* N => "tag"; sorted by N */ - 6, /* Number of elements in the maps */ - 7, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameter_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Type = { - "RANparameter-Type", - "RANparameter-Type", - &asn_OP_NativeEnumerated, - asn_DEF_E2_RANparameter_Type_tags_1, - sizeof(asn_DEF_E2_RANparameter_Type_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Type_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameter_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameter_Type_tags_1) - /sizeof(asn_DEF_E2_RANparameter_Type_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANparameter_Type_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_RANparameter_Type_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Type.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Type.h deleted file mode 100644 index bb2ed80..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Type.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameter_Type_H_ -#define _E2_RANparameter_Type_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_RANparameter_Type { - E2_RANparameter_Type_integer = 0, - E2_RANparameter_Type_enumerated = 1, - E2_RANparameter_Type_boolean = 2, - E2_RANparameter_Type_bit_string = 3, - E2_RANparameter_Type_octet_string = 4, - E2_RANparameter_Type_printable_string = 5 - /* - * Enumeration is extensible - */ -} e_E2_RANparameter_Type; - -/* E2_RANparameter-Type */ -typedef long E2_RANparameter_Type_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANparameter_Type_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Type; -extern const asn_INTEGER_specifics_t asn_SPC_RANparameter_Type_specs_1; -asn_struct_free_f RANparameter_Type_free; -asn_struct_print_f RANparameter_Type_print; -asn_constr_check_f RANparameter_Type_constraint; -ber_type_decoder_f RANparameter_Type_decode_ber; -der_type_encoder_f RANparameter_Type_encode_der; -xer_type_decoder_f RANparameter_Type_decode_xer; -xer_type_encoder_f RANparameter_Type_encode_xer; -per_type_decoder_f RANparameter_Type_decode_uper; -per_type_encoder_f RANparameter_Type_encode_uper; -per_type_decoder_f RANparameter_Type_decode_aper; -per_type_encoder_f RANparameter_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameter_Type_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Value.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Value.c deleted file mode 100644 index 3e7abbf..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Value.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameter-Value.h" - -asn_per_constraints_t asn_PER_type_E2_RANparameter_Value_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_RANparameter_Value_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Value, choice.valueInt), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueInt" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Value, choice.valueEnum), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueEnum" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Value, choice.valueBool), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BOOLEAN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBool" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Value, choice.valueBitS), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBitS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Value, choice.valueOctS), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueOctS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameter_Value, choice.valuePrtS), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valuePrtS" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANparameter_Value_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrtS */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_RANparameter_Value_specs_1 = { - sizeof(struct E2_RANparameter_Value), - offsetof(struct E2_RANparameter_Value, _asn_ctx), - offsetof(struct E2_RANparameter_Value, present), - sizeof(((struct E2_RANparameter_Value *)0)->present), - asn_MAP_E2_RANparameter_Value_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, - 6 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Value = { - "RANparameter-Value", - "RANparameter-Value", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_RANparameter_Value_constr_1, CHOICE_constraint }, - asn_MBR_E2_RANparameter_Value_1, - 6, /* Elements count */ - &asn_SPC_E2_RANparameter_Value_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Value.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Value.h deleted file mode 100644 index 19e7025..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameter-Value.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameter_Value_H_ -#define _E2_RANparameter_Value_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "BOOLEAN.h" -#include "BIT_STRING.h" -#include "OCTET_STRING.h" -#include "PrintableString.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_RANparameter_Value_PR { - E2_RANparameter_Value_PR_NOTHING, /* No components present */ - E2_RANparameter_Value_PR_valueInt, - E2_RANparameter_Value_PR_valueEnum, - E2_RANparameter_Value_PR_valueBool, - E2_RANparameter_Value_PR_valueBitS, - E2_RANparameter_Value_PR_valueOctS, - E2_RANparameter_Value_PR_valuePrtS - /* Extensions may appear below */ - -} E2_RANparameter_Value_PR; - -/* E2_RANparameter-Value */ -typedef struct E2_RANparameter_Value { - E2_RANparameter_Value_PR present; - union E2_RANparameter_Value_u { - long valueInt; - long valueEnum; - BOOLEAN_t valueBool; - BIT_STRING_t valueBitS; - OCTET_STRING_t valueOctS; - PrintableString_t valuePrtS; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANparameter_Value_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameter_Value; -extern asn_CHOICE_specifics_t asn_SPC_E2_RANparameter_Value_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANparameter_Value_1[6]; -extern asn_per_constraints_t asn_PER_type_E2_RANparameter_Value_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameter_Value_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameterDef-Item.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameterDef-Item.c deleted file mode 100644 index b4ac9a1..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameterDef-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameterDef-Item.h" - -asn_TYPE_member_t asn_MBR_E2_RANparameterDef_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameterDef_Item, ranParameter_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANparameter_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameterDef_Item, ranParameter_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANparameter_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameterDef_Item, ranParameter_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANparameter_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameterDef_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANparameterDef_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANparameterDef_Item_specs_1 = { - sizeof(struct E2_RANparameterDef_Item), - offsetof(struct E2_RANparameterDef_Item, _asn_ctx), - asn_MAP_E2_RANparameterDef_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameterDef_Item = { - "RANparameterDef-Item", - "RANparameterDef-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANparameterDef_Item_tags_1, - sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1) - /sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameterDef_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1) - /sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANparameterDef_Item_1, - 3, /* Elements count */ - &asn_SPC_E2_RANparameterDef_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameterDef-Item.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameterDef-Item.h deleted file mode 100644 index 32ad3a5..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RANparameterDef-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameterDef_Item_H_ -#define _E2_RANparameterDef_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANparameter-ID.h" -#include "E2_RANparameter-Name.h" -#include "E2_RANparameter-Type.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANparameterDef-Item */ -typedef struct E2_RANparameterDef_Item { - E2_RANparameter_ID_t ranParameter_ID; - E2_RANparameter_Name_t ranParameter_Name; - E2_RANparameter_Type_t ranParameter_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANparameterDef_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameterDef_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANparameterDef_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANparameterDef_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameterDef_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ControlStyle-List.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ControlStyle-List.c deleted file mode 100644 index c3c8883..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ControlStyle-List.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-ControlStyle-List.h" - -asn_TYPE_member_t asn_MBR_E2_RIC_ControlStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlMessageFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_CallProcessIDFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-CallProcessIDFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_ControlStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_ControlStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ControlHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ControlMessageFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ric-CallProcessIDFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ControlStyle_List_specs_1 = { - sizeof(struct E2_RIC_ControlStyle_List), - offsetof(struct E2_RIC_ControlStyle_List, _asn_ctx), - asn_MAP_E2_RIC_ControlStyle_List_tag2el_1, - 5, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 5, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_ControlStyle_List = { - "RIC-ControlStyle-List", - "RIC-ControlStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_ControlStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_ControlStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_ControlStyle_List_1, - 5, /* Elements count */ - &asn_SPC_E2_RIC_ControlStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ControlStyle-List.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ControlStyle-List.h deleted file mode 100644 index a3d0fd4..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ControlStyle-List.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_ControlStyle_List_H_ -#define _E2_RIC_ControlStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-ControlStyle-List */ -typedef struct E2_RIC_ControlStyle_List { - E2_RIC_Style_Type_t ric_ControlStyle_Type; - E2_RIC_Style_Name_t ric_ControlStyle_Name; - E2_RIC_Format_Type_t ric_ControlHeaderFormat_Type; - E2_RIC_Format_Type_t ric_ControlMessageFormat_Type; - E2_RIC_Format_Type_t ric_CallProcessIDFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_ControlStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_ControlStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ControlStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_ControlStyle_List_1[5]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_ControlStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-EventTriggerStyle-List.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-EventTriggerStyle-List.c deleted file mode 100644 index 560b39d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-EventTriggerStyle-List.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-EventTriggerStyle-List.h" - -asn_TYPE_member_t asn_MBR_E2_RIC_EventTriggerStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_EventTriggerStyle_List, ric_EventTriggerFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_EventTriggerStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_EventTriggerStyle_List_specs_1 = { - sizeof(struct E2_RIC_EventTriggerStyle_List), - offsetof(struct E2_RIC_EventTriggerStyle_List, _asn_ctx), - asn_MAP_E2_RIC_EventTriggerStyle_List_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_EventTriggerStyle_List = { - "RIC-EventTriggerStyle-List", - "RIC-EventTriggerStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_EventTriggerStyle_List_1, - 3, /* Elements count */ - &asn_SPC_E2_RIC_EventTriggerStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-EventTriggerStyle-List.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-EventTriggerStyle-List.h deleted file mode 100644 index 0244732..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-EventTriggerStyle-List.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_EventTriggerStyle_List_H_ -#define _E2_RIC_EventTriggerStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-EventTriggerStyle-List */ -typedef struct E2_RIC_EventTriggerStyle_List { - E2_RIC_Style_Type_t ric_EventTriggerStyle_Type; - E2_RIC_Style_Name_t ric_EventTriggerStyle_Name; - E2_RIC_Format_Type_t ric_EventTriggerFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_EventTriggerStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_EventTriggerStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_EventTriggerStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_EventTriggerStyle_List_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_EventTriggerStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Format-Type.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Format-Type.c deleted file mode 100644 index 5ca70e8..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Format-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-Format-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_RIC_Format_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_Format_Type = { - "RIC-Format-Type", - "RIC-Format-Type", - &asn_OP_NativeInteger, - asn_DEF_E2_RIC_Format_Type_tags_1, - sizeof(asn_DEF_E2_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Format_Type_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_Format_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Format_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Format-Type.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Format-Type.h deleted file mode 100644 index 054ee7c..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Format-Type.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_Format_Type_H_ -#define _E2_RIC_Format_Type_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-Format-Type */ -typedef long E2_RIC_Format_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_Format_Type; -asn_struct_free_f E2_RIC_Format_Type_free; -asn_struct_print_f E2_RIC_Format_Type_print; -asn_constr_check_f E2_RIC_Format_Type_constraint; -ber_type_decoder_f E2_RIC_Format_Type_decode_ber; -der_type_encoder_f E2_RIC_Format_Type_encode_der; -xer_type_decoder_f E2_RIC_Format_Type_decode_xer; -xer_type_encoder_f E2_RIC_Format_Type_encode_xer; -per_type_decoder_f E2_RIC_Format_Type_decode_uper; -per_type_encoder_f E2_RIC_Format_Type_encode_uper; -per_type_decoder_f E2_RIC_Format_Type_decode_aper; -per_type_encoder_f E2_RIC_Format_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_Format_Type_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-InsertStyle-List.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-InsertStyle-List.c deleted file mode 100644 index f448959..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-InsertStyle-List.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-InsertStyle-List.h" - -#include "E2_RANparameterDef-Item.h" -static int -memb_E2_ric_InsertRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_InsertRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_InsertRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_InsertRanParameterDef_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameterDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_InsertRanParameterDef_List_specs_5 = { - sizeof(struct E2_RIC_InsertStyle_List__ric_InsertRanParameterDef_List), - offsetof(struct E2_RIC_InsertStyle_List__ric_InsertRanParameterDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_InsertRanParameterDef_List_5 = { - "ric-InsertRanParameterDef-List", - "ric-InsertRanParameterDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5, - sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_InsertRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_InsertRanParameterDef_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_InsertRanParameterDef_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RIC_InsertStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-InsertStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-InsertStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertActionFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-InsertActionFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertRanParameterDef_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_InsertRanParameterDef_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_InsertRanParameterDef_List_constr_5, memb_E2_ric_InsertRanParameterDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-InsertRanParameterDef-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_IndicationHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_IndicationMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationMessageFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_CallProcessIDFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (6 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-CallProcessIDFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_InsertStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_InsertStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-InsertStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-InsertStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-InsertActionFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-InsertRanParameterDef-List */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ric-IndicationMessageFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ric-CallProcessIDFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_InsertStyle_List_specs_1 = { - sizeof(struct E2_RIC_InsertStyle_List), - offsetof(struct E2_RIC_InsertStyle_List, _asn_ctx), - asn_MAP_E2_RIC_InsertStyle_List_tag2el_1, - 7, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 7, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_InsertStyle_List = { - "RIC-InsertStyle-List", - "RIC-InsertStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_InsertStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_InsertStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_InsertStyle_List_1, - 7, /* Elements count */ - &asn_SPC_E2_RIC_InsertStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-InsertStyle-List.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-InsertStyle-List.h deleted file mode 100644 index 7e92ca1..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-InsertStyle-List.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_InsertStyle_List_H_ -#define _E2_RIC_InsertStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameterDef_Item; - -/* E2_RIC-InsertStyle-List */ -typedef struct E2_RIC_InsertStyle_List { - E2_RIC_Style_Type_t ric_InsertStyle_Type; - E2_RIC_Style_Name_t ric_InsertStyle_Name; - E2_RIC_Format_Type_t ric_InsertActionFormat_Type; - struct E2_RIC_InsertStyle_List__ric_InsertRanParameterDef_List { - A_SEQUENCE_OF(struct E2_RANparameterDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ric_InsertRanParameterDef_List; - E2_RIC_Format_Type_t ric_IndicationHeaderFormat_Type; - E2_RIC_Format_Type_t ric_IndicationMessageFormat_Type; - E2_RIC_Format_Type_t ric_CallProcessIDFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_InsertStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_InsertStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_InsertStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_InsertStyle_List_1[7]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_InsertStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-PolicyStyle-List.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-PolicyStyle-List.c deleted file mode 100644 index 0c123d9..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-PolicyStyle-List.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-PolicyStyle-List.h" - -#include "E2_RANparameterDef-Item.h" -static int -memb_E2_ric_PolicyRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_PolicyRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_PolicyRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_PolicyRanParameterDef_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameterDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_PolicyRanParameterDef_List_specs_5 = { - sizeof(struct E2_RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List), - offsetof(struct E2_RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_PolicyRanParameterDef_List_5 = { - "ric-PolicyRanParameterDef-List", - "ric-PolicyRanParameterDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5, - sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_PolicyRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_PolicyRanParameterDef_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_PolicyRanParameterDef_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RIC_PolicyStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-PolicyStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-PolicyStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyActionFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-PolicyActionFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyRanParameterDef_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_PolicyRanParameterDef_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_PolicyRanParameterDef_List_constr_5, memb_E2_ric_PolicyRanParameterDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-PolicyRanParameterDef-List" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_PolicyStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_PolicyStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-PolicyStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-PolicyActionFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-PolicyRanParameterDef-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_PolicyStyle_List_specs_1 = { - sizeof(struct E2_RIC_PolicyStyle_List), - offsetof(struct E2_RIC_PolicyStyle_List, _asn_ctx), - asn_MAP_E2_RIC_PolicyStyle_List_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_PolicyStyle_List = { - "RIC-PolicyStyle-List", - "RIC-PolicyStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_PolicyStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_PolicyStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_PolicyStyle_List_1, - 4, /* Elements count */ - &asn_SPC_E2_RIC_PolicyStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-PolicyStyle-List.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-PolicyStyle-List.h deleted file mode 100644 index 3493fe4..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-PolicyStyle-List.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_PolicyStyle_List_H_ -#define _E2_RIC_PolicyStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameterDef_Item; - -/* E2_RIC-PolicyStyle-List */ -typedef struct E2_RIC_PolicyStyle_List { - E2_RIC_Style_Type_t ric_PolicyStyle_Type; - E2_RIC_Style_Name_t ric_PolicyStyle_Name; - E2_RIC_Format_Type_t ric_PolicyActionFormat_Type; - struct E2_RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List { - A_SEQUENCE_OF(struct E2_RANparameterDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ric_PolicyRanParameterDef_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_PolicyStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_PolicyStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_PolicyStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_PolicyStyle_List_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_PolicyStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ReportStyle-List.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ReportStyle-List.c deleted file mode 100644 index 2148fc5..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ReportStyle-List.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-ReportStyle-List.h" - -#include "E2_RANparameterDef-Item.h" -static int -memb_E2_ric_ReportRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_ReportRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_ReportRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_ReportRanParameterDef_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameterDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_ReportRanParameterDef_List_specs_5 = { - sizeof(struct E2_RIC_ReportStyle_List__ric_ReportRanParameterDef_List), - offsetof(struct E2_RIC_ReportStyle_List__ric_ReportRanParameterDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_ReportRanParameterDef_List_5 = { - "ric-ReportRanParameterDef-List", - "ric-ReportRanParameterDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5, - sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_ReportRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_ReportRanParameterDef_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_ReportRanParameterDef_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RIC_ReportStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportActionFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportActionFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportRanParameterDef_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_ReportRanParameterDef_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_ReportRanParameterDef_List_constr_5, memb_E2_ric_ReportRanParameterDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-ReportRanParameterDef-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_IndicationHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_IndicationMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationMessageFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_ReportStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_ReportStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportActionFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ReportRanParameterDef-List */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-IndicationMessageFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ReportStyle_List_specs_1 = { - sizeof(struct E2_RIC_ReportStyle_List), - offsetof(struct E2_RIC_ReportStyle_List, _asn_ctx), - asn_MAP_E2_RIC_ReportStyle_List_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 6, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_ReportStyle_List = { - "RIC-ReportStyle-List", - "RIC-ReportStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_ReportStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_ReportStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_ReportStyle_List_1, - 6, /* Elements count */ - &asn_SPC_E2_RIC_ReportStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ReportStyle-List.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ReportStyle-List.h deleted file mode 100644 index ce66906..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-ReportStyle-List.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_ReportStyle_List_H_ -#define _E2_RIC_ReportStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameterDef_Item; - -/* E2_RIC-ReportStyle-List */ -typedef struct E2_RIC_ReportStyle_List { - E2_RIC_Style_Type_t ric_ReportStyle_Type; - E2_RIC_Style_Name_t ric_ReportStyle_Name; - E2_RIC_Format_Type_t ric_ReportActionFormat_Type; - struct E2_RIC_ReportStyle_List__ric_ReportRanParameterDef_List { - A_SEQUENCE_OF(struct E2_RANparameterDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ric_ReportRanParameterDef_List; - E2_RIC_Format_Type_t ric_IndicationHeaderFormat_Type; - E2_RIC_Format_Type_t ric_IndicationMessageFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_ReportStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_ReportStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ReportStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_ReportStyle_List_1[6]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_ReportStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Name.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Name.c deleted file mode 100644 index 656abfb..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Name.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-Style-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -E2_RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_RIC_Style_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_E2_RIC_Style_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RIC_Style_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_RIC_Style_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_RIC_Style_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_Style_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Name = { - "RIC-Style-Name", - "RIC-Style-Name", - &asn_OP_PrintableString, - asn_DEF_E2_RIC_Style_Name_tags_1, - sizeof(asn_DEF_E2_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Name_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_Style_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Name_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RIC_Style_Name_constr_1, E2_RIC_Style_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Name.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Name.h deleted file mode 100644 index abb539b..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Name.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_Style_Name_H_ -#define _E2_RIC_Style_Name_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-Style-Name */ -typedef PrintableString_t E2_RIC_Style_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RIC_Style_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Name; -asn_struct_free_f E2_RIC_Style_Name_free; -asn_struct_print_f E2_RIC_Style_Name_print; -asn_constr_check_f E2_RIC_Style_Name_constraint; -ber_type_decoder_f E2_RIC_Style_Name_decode_ber; -der_type_encoder_f E2_RIC_Style_Name_encode_der; -xer_type_decoder_f E2_RIC_Style_Name_decode_xer; -xer_type_encoder_f E2_RIC_Style_Name_encode_xer; -per_type_decoder_f E2_RIC_Style_Name_decode_uper; -per_type_encoder_f E2_RIC_Style_Name_encode_uper; -per_type_decoder_f E2_RIC_Style_Name_decode_aper; -per_type_encoder_f E2_RIC_Style_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_Style_Name_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Type.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Type.c deleted file mode 100644 index b1eeb8d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-Style-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_RIC_Style_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Type = { - "RIC-Style-Type", - "RIC-Style-Type", - &asn_OP_NativeInteger, - asn_DEF_E2_RIC_Style_Type_tags_1, - sizeof(asn_DEF_E2_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Type_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_Style_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Type.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Type.h deleted file mode 100644 index 6572e54..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_RIC-Style-Type.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-NRT-IEs" - * found in "spec/e2sm-gNB-NRT-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_Style_Type_H_ -#define _E2_RIC_Style_Type_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-Style-Type */ -typedef long E2_RIC_Style_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Type; -asn_struct_free_f E2_RIC_Style_Type_free; -asn_struct_print_f E2_RIC_Style_Type_print; -asn_constr_check_f E2_RIC_Style_Type_constraint; -ber_type_decoder_f E2_RIC_Style_Type_decode_ber; -der_type_encoder_f E2_RIC_Style_Type_encode_der; -xer_type_decoder_f E2_RIC_Style_Type_decode_xer; -xer_type_encoder_f E2_RIC_Style_Type_encode_xer; -per_type_decoder_f E2_RIC_Style_Type_decode_uper; -per_type_encoder_f E2_RIC_Style_Type_encode_uper; -per_type_decoder_f E2_RIC_Style_Type_decode_aper; -per_type_encoder_f E2_RIC_Style_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_Style_Type_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_asn_constant.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_asn_constant.h deleted file mode 100644 index 1bc1f28..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/E2_asn_constant.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -#ifndef _E2_ASN_CONSTANT_H -#define _E2_ASN_CONSTANT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define E2_maxofCellinRAN (16384) -#define E2_maxNoOfNeighbours (1024) -#define E2_maxofRANParameters (255) -#define E2_maxofRICstyles (63) - - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ASN_CONSTANT_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/INTEGER.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/INTEGER.c deleted file mode 100644 index 2a2f4d7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/INTEGER.c +++ /dev/null @@ -1,1735 +0,0 @@ -/*- - * Copyright (c) 2003-2014 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* Encoder and decoder of a primitive type */ -#include - -/* - * INTEGER basic type description. - */ -static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_INTEGER = { - INTEGER_free, - INTEGER_print, - INTEGER_compare, - ber_decode_primitive, - INTEGER_encode_der, - INTEGER_decode_xer, - INTEGER_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - INTEGER_decode_oer, /* OER decoder */ - INTEGER_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - INTEGER_decode_uper, /* Unaligned PER decoder */ - INTEGER_encode_uper, /* Unaligned PER encoder */ - INTEGER_decode_aper, /* Aligned PER decoder */ - INTEGER_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - INTEGER_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_INTEGER = { - "INTEGER", - "INTEGER", - &asn_OP_INTEGER, - asn_DEF_INTEGER_tags, - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - asn_DEF_INTEGER_tags, /* Same as above */ - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Encode INTEGER type using DER. - */ -asn_enc_rval_t -INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t rval; - INTEGER_t effective_integer; - - ASN_DEBUG("%s %s as INTEGER (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - /* - * Canonicalize integer in the buffer. - * (Remove too long sign extension, remove some first 0x00 bytes) - */ - if(st->buf) { - uint8_t *buf = st->buf; - uint8_t *end1 = buf + st->size - 1; - int shift; - - /* Compute the number of superfluous leading bytes */ - for(; buf < end1; buf++) { - /* - * If the contents octets of an integer value encoding - * consist of more than one octet, then the bits of the - * first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - switch(*buf) { - case 0x00: if((buf[1] & 0x80) == 0) - continue; - break; - case 0xff: if((buf[1] & 0x80)) - continue; - break; - } - break; - } - - /* Remove leading superfluous bytes from the integer */ - shift = buf - st->buf; - if(shift) { - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - unconst.c_buf = st->buf; - effective_integer.buf = unconst.nc_buf + shift; - effective_integer.size = st->size - shift; - - st = &effective_integer; - } - } - - rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); - if(rval.structure_ptr == &effective_integer) { - rval.structure_ptr = sptr; - } - return rval; -} - -static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( - const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop); - -/* - * INTEGER specific human-readable output. - */ -static ssize_t -INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; - uint8_t *buf = st->buf; - uint8_t *buf_end = st->buf + st->size; - intmax_t value; - ssize_t wrote = 0; - char *p; - int ret; - - if(specs && specs->field_unsigned) - ret = asn_INTEGER2umax(st, (uintmax_t *)&value); - else - ret = asn_INTEGER2imax(st, &value); - - /* Simple case: the integer size is small */ - if(ret == 0) { - const asn_INTEGER_enum_map_t *el; - el = (value >= 0 || !specs || !specs->field_unsigned) - ? INTEGER_map_value2enum(specs, value) : 0; - if(el) { - if(plainOrXER == 0) - return asn__format_to_callback(cb, app_key, - "%" ASN_PRIdMAX " (%s)", value, el->enum_name); - else - return asn__format_to_callback(cb, app_key, - "<%s/>", el->enum_name); - } else if(plainOrXER && specs && specs->strict_enumeration) { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } else { - return asn__format_to_callback(cb, app_key, - (specs && specs->field_unsigned) - ? "%" ASN_PRIuMAX - : "%" ASN_PRIdMAX, - value); - } - } else if(plainOrXER && specs && specs->strict_enumeration) { - /* - * Here and earlier, we cannot encode the ENUMERATED values - * if there is no corresponding identifier. - */ - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } - - /* Output in the long xx:yy:zz... format */ - /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ - for(p = scratch; buf < buf_end; buf++) { - const char * const h2c = "0123456789ABCDEF"; - if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { - /* Flush buffer */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - wrote += p - scratch; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x3a; /* ":" */ - } - if(p != scratch) - p--; /* Remove the last ":" */ - - wrote += p - scratch; - return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; -} - -/* - * INTEGER specific human-readable output. - */ -int -INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - ssize_t ret; - - (void)ilevel; - - if(!st || !st->buf) - ret = cb("", 8, app_key); - else - ret = INTEGER__dump(td, st, cb, app_key, 0); - - return (ret < 0) ? -1 : 0; -} - -struct e2v_key { - const char *start; - const char *stop; - const asn_INTEGER_enum_map_t *vemap; - const unsigned int *evmap; -}; -static int -INTEGER__compar_enum2value(const void *kp, const void *am) { - const struct e2v_key *key = (const struct e2v_key *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - const char *ptr, *end, *name; - - /* Remap the element (sort by different criterion) */ - el = key->vemap + key->evmap[el - key->vemap]; - - /* Compare strings */ - for(ptr = key->start, end = key->stop, name = el->enum_name; - ptr < end; ptr++, name++) { - if(*ptr != *name || !*name) - return *(const unsigned char *)ptr - - *(const unsigned char *)name; - } - return name[0] ? -1 : 0; -} - -static const asn_INTEGER_enum_map_t * -INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop) { - const asn_INTEGER_enum_map_t *el_found; - int count = specs ? specs->map_count : 0; - struct e2v_key key; - const char *lp; - - if(!count) return NULL; - - /* Guaranteed: assert(lstart < lstop); */ - /* Figure out the tag name */ - for(lstart++, lp = lstart; lp < lstop; lp++) { - switch(*lp) { - case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ - case 0x2f: /* '/' */ case 0x3e: /* '>' */ - break; - default: - continue; - } - break; - } - if(lp == lstop) return NULL; /* No tag found */ - lstop = lp; - - key.start = lstart; - key.stop = lstop; - key.vemap = specs->value2enum; - key.evmap = specs->enum2value; - el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, - specs->value2enum, count, sizeof(specs->value2enum[0]), - INTEGER__compar_enum2value); - if(el_found) { - /* Remap enum2value into value2enum */ - el_found = key.vemap + key.evmap[el_found - key.vemap]; - } - return el_found; -} - -static int -INTEGER__compar_value2enum(const void *kp, const void *am) { - long a = *(const long *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - long b = el->nat_value; - if(a < b) return -1; - else if(a == b) return 0; - else return 1; -} - -const asn_INTEGER_enum_map_t * -INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { - int count = specs ? specs->map_count : 0; - if(!count) return 0; - return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, - count, sizeof(specs->value2enum[0]), - INTEGER__compar_value2enum); -} - -static int -INTEGER_st_prealloc(INTEGER_t *st, int min_size) { - void *p = MALLOC(min_size + 1); - if(p) { - void *b = st->buf; - st->size = 0; - st->buf = p; - FREEMEM(b); - return 0; - } else { - return -1; - } -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t *st = (INTEGER_t *)sptr; - intmax_t dec_value; - intmax_t hex_value = 0; - const char *lp; - const char *lstart = (const char *)chunk_buf; - const char *lstop = lstart + chunk_size; - enum { - ST_LEADSPACE, - ST_SKIPSPHEX, - ST_WAITDIGITS, - ST_DIGITS, - ST_DIGITS_TRAILSPACE, - ST_HEXDIGIT1, - ST_HEXDIGIT2, - ST_HEXDIGITS_TRAILSPACE, - ST_HEXCOLON, - ST_END_ENUM, - ST_UNEXPECTED - } state = ST_LEADSPACE; - const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ - const char *dec_value_end = 0; - - if(chunk_size) - ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", - (long)chunk_size, *lstart, lstop[-1]); - - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - - /* - * We may have received a tag here. It will be processed inline. - * Use strtoul()-like code and serialize the result. - */ - for(lp = lstart; lp < lstop; lp++) { - int lv = *lp; - switch(lv) { - case 0x09: case 0x0a: case 0x0d: case 0x20: - switch(state) { - case ST_LEADSPACE: - case ST_DIGITS_TRAILSPACE: - case ST_HEXDIGITS_TRAILSPACE: - case ST_SKIPSPHEX: - continue; - case ST_DIGITS: - dec_value_end = lp; - state = ST_DIGITS_TRAILSPACE; - continue; - case ST_HEXCOLON: - state = ST_HEXDIGITS_TRAILSPACE; - continue; - default: - break; - } - break; - case 0x2d: /* '-' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x2b: /* '+' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: - switch(state) { - case ST_DIGITS: continue; - case ST_SKIPSPHEX: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = (lv - 0x30) << 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += (lv - 0x30); - state = ST_HEXCOLON; - st->buf[st->size++] = (uint8_t)hex_value; - continue; - case ST_HEXCOLON: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - dec_value = 0; - dec_value_start = lp; - /* FALL THROUGH */ - case ST_WAITDIGITS: - state = ST_DIGITS; - continue; - default: - break; - } - break; - case 0x3c: /* '<', start of XML encoded enumeration */ - if(state == ST_LEADSPACE) { - const asn_INTEGER_enum_map_t *el; - el = INTEGER_map_enum2value( - (const asn_INTEGER_specifics_t *) - td->specifics, lstart, lstop); - if(el) { - ASN_DEBUG("Found \"%s\" => %ld", - el->enum_name, el->nat_value); - dec_value = el->nat_value; - state = ST_END_ENUM; - lp = lstop - 1; - continue; - } - ASN_DEBUG("Unknown identifier for INTEGER"); - } - return XPBD_BROKEN_ENCODING; - case 0x3a: /* ':' */ - if(state == ST_HEXCOLON) { - /* This colon is expected */ - state = ST_HEXDIGIT1; - continue; - } else if(state == ST_DIGITS) { - /* The colon here means that we have - * decoded the first two hexadecimal - * places as a decimal value. - * Switch decoding mode. */ - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - } else { - ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); - break; - } - /* [A-Fa-f] */ - case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: - case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: - switch(state) { - case ST_SKIPSPHEX: - case ST_LEADSPACE: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - hex_value <<= 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - st->buf[st->size++] = (uint8_t)hex_value; - state = ST_HEXCOLON; - continue; - case ST_DIGITS: - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - default: - break; - } - break; - } - - /* Found extra non-numeric stuff */ - ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", - lv, (long)(lp - lstart)); - state = ST_UNEXPECTED; - break; - } - - switch(state) { - case ST_END_ENUM: - /* Got a complete and valid enumeration encoded as a tag. */ - break; - case ST_DIGITS: - dec_value_end = lstop; - /* FALL THROUGH */ - case ST_DIGITS_TRAILSPACE: - /* The last symbol encountered was a digit. */ - switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { - case ASN_STRTOX_OK: - if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { - break; - } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { - break; - } else { - /* - * We model INTEGER on long for XER, - * to avoid rewriting all the tests at once. - */ - ASN_DEBUG("INTEGER exceeds long range"); - } - /* Fall through */ - case ASN_STRTOX_ERROR_RANGE: - ASN_DEBUG("INTEGER decode %s hit range limit", td->name); - return XPBD_DECODER_LIMIT; - case ASN_STRTOX_ERROR_INVAL: - case ASN_STRTOX_EXPECT_MORE: - case ASN_STRTOX_EXTRA_DATA: - return XPBD_BROKEN_ENCODING; - } - break; - case ST_HEXCOLON: - case ST_HEXDIGITS_TRAILSPACE: - st->buf[st->size] = 0; /* Just in case termination */ - return XPBD_BODY_CONSUMED; - case ST_HEXDIGIT1: - case ST_HEXDIGIT2: - case ST_SKIPSPHEX: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - /* Content not found */ - return XPBD_NOT_BODY_IGNORE; - case ST_WAITDIGITS: - case ST_UNEXPECTED: - ASN_DEBUG("INTEGER: No useful digits (state %d)", state); - return XPBD_BROKEN_ENCODING; /* No digits */ - } - - /* - * Convert the result of parsing of enumeration or a straight - * decimal value into a BER representation. - */ - if(asn_imax2INTEGER(st, dec_value)) { - ASN_DEBUG("INTEGER decode %s conversion failed", td->name); - return XPBD_SYSTEM_FAILURE; - } - - return XPBD_BODY_CONSUMED; -} - -asn_dec_rval_t -INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(INTEGER_t), opt_mname, - buf_ptr, size, INTEGER__xer_body_decode); -} - -asn_enc_rval_t -INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t er = {0,0,0}; - - (void)ilevel; - (void)flags; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = INTEGER__dump(td, st, cb, app_key, 1); - if(er.encoded < 0) ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691-2008/11, #13.2.2, constrained whole number */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #11.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) - ASN__DECODE_FAILED; - - if(specs && specs->field_unsigned) { - unsigned long uvalue = 0; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - uvalue += ct->lower_bound; - if(asn_ulong2INTEGER(st, uvalue)) - ASN__DECODE_FAILED; - } else { - unsigned long uvalue = 0; - long svalue; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - if(per_long_range_unrebase(uvalue, ct->lower_bound, - ct->upper_bound, &svalue) - || asn_long2INTEGER(st, svalue)) { - ASN__DECODE_FAILED; - } - } - return rval; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len = 0; - void *p = NULL; - int ret = 0; - - /* Get the PER length */ - len = uper_get_length(pd, -1, 0, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value = 0; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_imax2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - - /* X.691-11/2008, #13.2.2, test if constrained whole number */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - /* #11.5.6 -> #11.3 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - if(specs && specs->field_unsigned) { - if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) - || ((unsigned long)value < (unsigned long)ct->lower_bound)) - || ((unsigned long)value > (unsigned long)ct->upper_bound) - ) { - ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", - value, ct->lower_bound, ct->upper_bound); - ASN__ENCODE_FAILED; - } - v = (unsigned long)value - (unsigned long)ct->lower_bound; - } else { - if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { - ASN__ENCODE_FAILED; - } - } - if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - int need_eom = 0; - ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #10.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if (ct->range_bits > 16) { - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - int length = 0, i; - long value = 0; - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, - max_range_bytes, i); - - if ((length = per_get_few_bits(pd, i)) < 0) - ASN__DECODE_FAILED; - - /* X.691 #12.2.6 length determinant + lb (1) */ - length += 1; - ASN_DEBUG("Got length %d", length); - if (aper_get_align(pd) != 0) - ASN__DECODE_FAILED; - while (length--) { - int buf = per_get_few_bits(pd, 8); - if (buf < 0) - ASN__DECODE_FAILED; - value += (((long)buf) << (8 * length)); - } - - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_uint642INTEGER(st, (unsigned long)value) - : asn_int642INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } else { - long value = 0; - if (ct->range_bits < 8) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else if (ct->range_bits == 8) { - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else { - /* Align */ - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, 16); - if(value < 0) ASN__DECODE_STARVED; - } - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_ulong2INTEGER(st, value) - : asn_long2INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } - return rval; - } else { - ASN__DECODE_FAILED; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len; - void *p; - int ret; - - /* Get the PER length */ - len = aper_get_length(pd, -1, -1, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_long2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - - /* #10.5.6 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - - v = value - ct->lower_bound; - - /* #12 <= 8 -> alignment ? */ - if (ct->range_bits < 8) { - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits == 8) { - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits <= 16) { - /* Consume the bytes to align on octet */ - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x0000 | v, - 16)) - ASN__ENCODE_FAILED; - } else { - /* TODO: extend to >64 bits */ - int64_t v64 = v; - int i, j; - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - - for (j = sizeof(int64_t) -1; j != 0; j--) { - int64_t val; - val = v64 >> (j * 8); - if (val != 0) - break; - } - - /* Putting length in the minimum number of bits ex: 5 = 3bits */ - if (per_put_few_bits(po, j, i)) - ASN__ENCODE_FAILED; - - /* Consume the bits to align on octet */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - /* Put the value */ - for (i = 0; i <= j; i++) { - if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) - ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - ssize_t mayEncode = aper_put_length(po, -1, end - buf); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -static intmax_t -asn__integer_convert(const uint8_t *b, const uint8_t *end) { - uintmax_t value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (uintmax_t)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -int -asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { - uint8_t *b, *end; - size_t size; - - /* Sanity checking */ - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - /* Cache the begin/end of the buffer */ - b = iptr->buf; /* Start of the INTEGER buffer */ - size = iptr->size; - end = b + size; /* Where to stop */ - - if(size > sizeof(intmax_t)) { - uint8_t *end1 = end - 1; - /* - * Slightly more advanced processing, - * able to process INTEGERs with >sizeof(intmax_t) bytes - * when the actual value is small, e.g. for intmax_t == int32_t - * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) - */ - /* Skip out the insignificant leading bytes */ - for(; b < end1; b++) { - switch(*b) { - case 0x00: if((b[1] & 0x80) == 0) continue; break; - case 0xff: if((b[1] & 0x80) != 0) continue; break; - } - break; - } - - size = end - b; - if(size > sizeof(intmax_t)) { - /* Still cannot fit the sizeof(intmax_t) */ - errno = ERANGE; - return -1; - } - } - - /* Shortcut processing of a corner case */ - if(end == b) { - *lptr = 0; - return 0; - } - - *lptr = asn__integer_convert(b, end); - return 0; -} - -/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ -int -asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { - uint8_t *b, *end; - uintmax_t value; - size_t size; - - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - b = iptr->buf; - size = iptr->size; - end = b + size; - - /* If all extra leading bytes are zeroes, ignore them */ - for(; size > sizeof(value); b++, size--) { - if(*b) { - /* Value won't fit into uintmax_t */ - errno = ERANGE; - return -1; - } - } - - /* Conversion engine */ - for(value = 0; b < end; b++) - value = (value << 8) | *b; - - *lptr = value; - return 0; -} - -int -asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= ((~(uintmax_t)0) >> 1)) { - return asn_imax2INTEGER(st, value); - } - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ - for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)(long *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -int -asn_INTEGER2long(const INTEGER_t *iptr, long *l) { - intmax_t v; - if(asn_INTEGER2imax(iptr, &v) == 0) { - if(v < LONG_MIN || v > LONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { - uintmax_t v; - if(asn_INTEGER2umax(iptr, &v) == 0) { - if(v > ULONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_long2INTEGER(INTEGER_t *st, long value) { - return asn_imax2INTEGER(st, value); -} - -int -asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { - return asn_imax2INTEGER(st, value); -} - - -int -asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= INT64_MAX) - return asn_int642INTEGER(st, value); - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; - for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_int642INTEGER(INTEGER_t *st, int64_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtol/strtoimax(3). - */ -enum asn_strtox_result_e -asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { - int sign = 1; - intmax_t value; - -#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) - const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; - intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; -#undef ASN1_INTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - last_digit_max++; - sign = -1; - /* FALL THROUGH */ - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - if(sign > 0) { - value = value * 10 + d; - } else { - sign = 1; - value = -value * 10 - d; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *intp = sign * value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *intp = sign * value; - return ASN_STRTOX_OK; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtoul/strtoumax(3). - */ -enum asn_strtox_result_e -asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { - uintmax_t value; - -#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) - const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; - uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; -#undef ASN1_UINTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - return ASN_STRTOX_ERROR_INVAL; - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - unsigned int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - value = value * 10 + d; - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *uintp = value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *uintp = value; - return ASN_STRTOX_OK; -} - -enum asn_strtox_result_e -asn_strtol_lim(const char *str, const char **end, long *lp) { - intmax_t value; - switch(asn_strtoimax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -enum asn_strtox_result_e -asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { - uintmax_t value; - switch(asn_strtoumax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -int -INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const INTEGER_t *a = aptr; - const INTEGER_t *b = bptr; - - (void)td; - - if(a && b) { - if(a->size && b->size) { - int sign_a = (a->buf[0] & 0x80) ? -1 : 1; - int sign_b = (b->buf[0] & 0x80) ? -1 : 1; - - if(sign_a < sign_b) return -1; - if(sign_a > sign_b) return 1; - - /* The shortest integer wins, unless comparing negatives */ - if(a->size < b->size) { - return -1 * sign_a; - } else if(a->size > b->size) { - return 1 * sign_b; - } - - return sign_a * memcmp(a->buf, b->buf, a->size); - } else if(a->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (1) * sign; - } else if(b->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (-1) * sign; - } else { - return 0; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -asn_random_fill_result_t -INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - INTEGER_t *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (INTEGER_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - if(asn_imax2INTEGER(st, value)) { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return result_failed; - } else { - *sptr = st; - result_ok.length = st->size; - return result_ok; - } -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/INTEGER.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/INTEGER.h deleted file mode 100644 index f776c07..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/INTEGER.h +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _INTEGER_H_ -#define _INTEGER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; - -extern asn_TYPE_descriptor_t asn_DEF_INTEGER; -extern asn_TYPE_operation_t asn_OP_INTEGER; - -/* Map with to integer value association */ -typedef struct asn_INTEGER_enum_map_s { - long nat_value; /* associated native integer value */ - size_t enum_len; /* strlen("tag") */ - const char *enum_name; /* "tag" */ -} asn_INTEGER_enum_map_t; - -/* This type describes an enumeration for INTEGER and ENUMERATED types */ -typedef struct asn_INTEGER_specifics_s { - const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ - const unsigned int *enum2value; /* "tag" => N; sorted by tag */ - int map_count; /* Elements in either map */ - int extension; /* This map is extensible */ - int strict_enumeration; /* Enumeration set is fixed */ - int field_width; /* Size of native integer */ - int field_unsigned; /* Signed=0, unsigned=1 */ -} asn_INTEGER_specifics_t; - -#define INTEGER_free ASN__PRIMITIVE_TYPE_free -#define INTEGER_decode_ber ber_decode_primitive -#define INTEGER_constraint asn_generic_no_constraint -asn_struct_print_f INTEGER_print; -asn_struct_compare_f INTEGER_compare; -der_type_encoder_f INTEGER_encode_der; -xer_type_decoder_f INTEGER_decode_xer; -xer_type_encoder_f INTEGER_encode_xer; -oer_type_decoder_f INTEGER_decode_oer; -oer_type_encoder_f INTEGER_encode_oer; -per_type_decoder_f INTEGER_decode_uper; -per_type_encoder_f INTEGER_encode_uper; -per_type_decoder_f INTEGER_decode_aper; -per_type_encoder_f INTEGER_encode_aper; -asn_random_fill_f INTEGER_random_fill; - -/*********************************** - * Some handy conversion routines. * - ***********************************/ - -/* - * Natiwe size-independent conversion of native integers to/from INTEGER. - * (l_size) is in bytes. - * Returns 0 if it was possible to convert, -1 otherwise. - * -1/EINVAL: Mandatory argument missing - * -1/ERANGE: Value encoded is out of range for long representation - * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). - */ -int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); -int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); -int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); -int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); - -/* - * Size-specific conversion helpers. - */ -int asn_INTEGER2long(const INTEGER_t *i, long *l); -int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); -int asn_long2INTEGER(INTEGER_t *i, long l); -int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); -int asn_int642INTEGER(INTEGER_t *i, int64_t l); -int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); - -/* A version of strtol/strtoimax(3) with nicer error reporting. */ -enum asn_strtox_result_e { - ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ - ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ - ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ - ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ - ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ -}; -enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, - long *l); -enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, - unsigned long *l); -enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, - intmax_t *l); -enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, - uintmax_t *l); - -/* - * Convert the integer value into the corresponding enumeration map entry. - */ -const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( - const asn_INTEGER_specifics_t *specs, long value); - -#ifdef __cplusplus -} -#endif - -#endif /* _INTEGER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/Makefile.am.libasncodec b/3rdparty/E2SM-gNB-NRT_V4.0.1/Makefile.am.libasncodec deleted file mode 100644 index 10b6b09..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/Makefile.am.libasncodec +++ /dev/null @@ -1,161 +0,0 @@ -ASN_MODULE_SRCS= \ - E2_ECGI.c \ - E2_EUTRANCellIdentifier.c \ - E2_NRCellIdentifier.c \ - E2_NRCGI.c \ - E2_PLMN-Identity.c \ - E2_E2SM-gNB-NRT-EventTriggerDefinition.c \ - E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.c \ - E2_E2SM-gNB-NRT-ActionDefinition.c \ - E2_E2SM-gNB-NRT-ActionDefinition-Format1.c \ - E2_E2SM-gNB-NRT-IndicationHeader.c \ - E2_E2SM-gNB-NRT-IndicationHeader-Format1.c \ - E2_E2SM-gNB-NRT-IndicationMessage.c \ - E2_NRT-Record-row-item.c \ - E2_NRT-Record-List-item.c \ - E2_E2SM-gNB-NRT-IndicationMessage-Format1.c \ - E2_E2SM-gNB-NRT-ControlHeader.c \ - E2_E2SM-gNB-NRT-ControlHeader-Format1.c \ - E2_E2SM-gNB-NRT-ControlMessage.c \ - E2_E2SM-gNB-NRT-ControlMessage-Format1.c \ - E2_E2SM-gNB-NRT-RANfunction-Definition.c \ - E2_NRT-Cell-ID.c \ - E2_NRT-ControlCommand.c \ - E2_NRT-TableRecord.c \ - E2_NRT-TimeStamp.c \ - E2_NRT-TriggerNature.c \ - E2_RANfunction-Name.c \ - E2_RANparameter-Item.c \ - E2_RANparameterDef-Item.c \ - E2_RANparameter-ID.c \ - E2_RANparameter-Name.c \ - E2_RANparameter-Test.c \ - E2_RANparameter-Type.c \ - E2_RANparameter-Value.c \ - E2_RIC-ControlStyle-List.c \ - E2_RIC-EventTriggerStyle-List.c \ - E2_RIC-InsertStyle-List.c \ - E2_RIC-PolicyStyle-List.c \ - E2_RIC-ReportStyle-List.c \ - E2_RIC-Format-Type.c \ - E2_RIC-Style-Type.c \ - E2_RIC-Style-Name.c - -ASN_MODULE_HDRS= \ - E2_ECGI.h \ - E2_EUTRANCellIdentifier.h \ - E2_NRCellIdentifier.h \ - E2_NRCGI.h \ - E2_PLMN-Identity.h \ - E2_E2SM-gNB-NRT-EventTriggerDefinition.h \ - E2_E2SM-gNB-NRT-EventTriggerDefinition-Format1.h \ - E2_E2SM-gNB-NRT-ActionDefinition.h \ - E2_E2SM-gNB-NRT-ActionDefinition-Format1.h \ - E2_E2SM-gNB-NRT-IndicationHeader.h \ - E2_E2SM-gNB-NRT-IndicationHeader-Format1.h \ - E2_E2SM-gNB-NRT-IndicationMessage.h \ - E2_NRT-Record-row-item.h \ - E2_NRT-Record-List-item.h \ - E2_E2SM-gNB-NRT-IndicationMessage-Format1.h \ - E2_E2SM-gNB-NRT-ControlHeader.h \ - E2_E2SM-gNB-NRT-ControlHeader-Format1.h \ - E2_E2SM-gNB-NRT-ControlMessage.h \ - E2_E2SM-gNB-NRT-ControlMessage-Format1.h \ - E2_E2SM-gNB-NRT-RANfunction-Definition.h \ - E2_NRT-Cell-ID.h \ - E2_NRT-ControlCommand.h \ - E2_NRT-TableRecord.h \ - E2_NRT-TimeStamp.h \ - E2_NRT-TriggerNature.h \ - E2_RANfunction-Name.h \ - E2_RANparameter-Item.h \ - E2_RANparameterDef-Item.h \ - E2_RANparameter-ID.h \ - E2_RANparameter-Name.h \ - E2_RANparameter-Test.h \ - E2_RANparameter-Type.h \ - E2_RANparameter-Value.h \ - E2_RIC-ControlStyle-List.h \ - E2_RIC-EventTriggerStyle-List.h \ - E2_RIC-InsertStyle-List.h \ - E2_RIC-PolicyStyle-List.h \ - E2_RIC-ReportStyle-List.h \ - E2_RIC-Format-Type.h \ - E2_RIC-Style-Type.h \ - E2_RIC-Style-Name.h - -ASN_MODULE_HDRS+=OPEN_TYPE.h -ASN_MODULE_SRCS+=OPEN_TYPE.c -ASN_MODULE_HDRS+=constr_CHOICE.h -ASN_MODULE_HDRS+=BOOLEAN.h -ASN_MODULE_SRCS+=BOOLEAN.c -ASN_MODULE_HDRS+=INTEGER.h -ASN_MODULE_SRCS+=INTEGER.c -ASN_MODULE_HDRS+=NativeEnumerated.h -ASN_MODULE_SRCS+=NativeEnumerated.c -ASN_MODULE_HDRS+=NativeInteger.h -ASN_MODULE_SRCS+=NativeInteger.c -ASN_MODULE_HDRS+=PrintableString.h -ASN_MODULE_SRCS+=PrintableString.c -ASN_MODULE_HDRS+=OCTET_STRING.h -ASN_MODULE_HDRS+=asn_SEQUENCE_OF.h -ASN_MODULE_SRCS+=asn_SEQUENCE_OF.c -ASN_MODULE_HDRS+=asn_SET_OF.h -ASN_MODULE_SRCS+=asn_SET_OF.c -ASN_MODULE_SRCS+=constr_CHOICE.c -ASN_MODULE_HDRS+=constr_SEQUENCE.h -ASN_MODULE_SRCS+=constr_SEQUENCE.c -ASN_MODULE_HDRS+=constr_SEQUENCE_OF.h -ASN_MODULE_SRCS+=constr_SEQUENCE_OF.c -ASN_MODULE_HDRS+=constr_SET_OF.h -ASN_MODULE_SRCS+=constr_SET_OF.c -ASN_MODULE_HDRS+=asn_application.h -ASN_MODULE_SRCS+=asn_application.c -ASN_MODULE_HDRS+=asn_ioc.h -ASN_MODULE_HDRS+=asn_system.h -ASN_MODULE_HDRS+=asn_codecs.h -ASN_MODULE_HDRS+=asn_internal.h -ASN_MODULE_SRCS+=asn_internal.c -ASN_MODULE_HDRS+=asn_random_fill.h -ASN_MODULE_SRCS+=asn_random_fill.c -ASN_MODULE_HDRS+=asn_bit_data.h -ASN_MODULE_SRCS+=asn_bit_data.c -ASN_MODULE_SRCS+=OCTET_STRING.c -ASN_MODULE_HDRS+=BIT_STRING.h -ASN_MODULE_SRCS+=BIT_STRING.c -ASN_MODULE_SRCS+=asn_codecs_prim.c -ASN_MODULE_HDRS+=asn_codecs_prim.h -ASN_MODULE_HDRS+=ber_tlv_length.h -ASN_MODULE_SRCS+=ber_tlv_length.c -ASN_MODULE_HDRS+=ber_tlv_tag.h -ASN_MODULE_SRCS+=ber_tlv_tag.c -ASN_MODULE_HDRS+=ber_decoder.h -ASN_MODULE_SRCS+=ber_decoder.c -ASN_MODULE_HDRS+=der_encoder.h -ASN_MODULE_SRCS+=der_encoder.c -ASN_MODULE_HDRS+=constr_TYPE.h -ASN_MODULE_SRCS+=constr_TYPE.c -ASN_MODULE_HDRS+=constraints.h -ASN_MODULE_SRCS+=constraints.c -ASN_MODULE_HDRS+=xer_support.h -ASN_MODULE_SRCS+=xer_support.c -ASN_MODULE_HDRS+=xer_decoder.h -ASN_MODULE_SRCS+=xer_decoder.c -ASN_MODULE_HDRS+=xer_encoder.h -ASN_MODULE_SRCS+=xer_encoder.c -ASN_MODULE_HDRS+=per_support.h -ASN_MODULE_SRCS+=per_support.c -ASN_MODULE_HDRS+=per_decoder.h -ASN_MODULE_SRCS+=per_decoder.c -ASN_MODULE_HDRS+=per_encoder.h -ASN_MODULE_SRCS+=per_encoder.c -ASN_MODULE_HDRS+=per_opentype.h -ASN_MODULE_SRCS+=per_opentype.c - -ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT - -lib_LTLIBRARIES+=libasncodec.la -libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) -libasncodec_la_CPPFLAGS=-I$(top_srcdir)/ -libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) -libasncodec_la_LDFLAGS=-lm diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeEnumerated.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeEnumerated.c deleted file mode 100644 index 800da97..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeEnumerated.c +++ /dev/null @@ -1,367 +0,0 @@ -/*- - * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeEnumerated basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeEnumerated = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeEnumerated_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeEnumerated_decode_oer, - NativeEnumerated_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeEnumerated_decode_uper, - NativeEnumerated_encode_uper, - NativeEnumerated_decode_aper, - NativeEnumerated_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeEnumerated_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { - "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ - "ENUMERATED", - &asn_OP_NativeEnumerated, - asn_DEF_NativeEnumerated_tags, - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - asn_DEF_NativeEnumerated_tags, /* Same as above */ - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -asn_enc_rval_t -NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - const asn_INTEGER_enum_map_t *el; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - el = INTEGER_map_value2enum(specs, *native); - if(el) { - er.encoded = - asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); - if(er.encoded < 0) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } else { - ASN_DEBUG( - "ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -static int -NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { - const asn_INTEGER_enum_map_t *a = ap; - const asn_INTEGER_enum_map_t *b = bp; - if(a->nat_value == b->nat_value) - return 0; - if(a->nat_value < b->nat_value) - return -1; - return 1; -} - -asn_enc_rval_t -NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct; - int inext = 0; - asn_INTEGER_enum_map_t key; - const asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, value, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(!specs->extension) - ASN__ENCODE_FAILED; - - /* - * X.691, #10.6: normally small non-negative whole number; - */ - ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", - value, specs->extension, inext, - value - (inext ? (specs->extension - 1) : 0)); - if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - /* Deal with APER padding */ - if(ct && ct->upper_bound >= 255) { - int padding = 0; - padding = (8 - (pd->moved % 8)) % 8; - ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); - ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); - if(padding > 0) - per_get_few_bits(pd, padding); - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -asn_enc_rval_t -NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct; - int inext = 0; - asn_INTEGER_enum_map_t key; - asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - if(native < 0) ASN__ENCODE_FAILED; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, value, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(!specs->extension) - ASN__ENCODE_FAILED; - - /* - * X.691, #10.6: normally small non-negative whole number; - */ - ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", - value, specs->extension, inext, - value - (inext ? (specs->extension - 1) : 0)); - if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeEnumerated.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeEnumerated.h deleted file mode 100644 index 459f0e6..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeEnumerated.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This type differs from the standard ENUMERATED in that it is modelled using - * the fixed machine type (long, int, short), so it can hold only values of - * limited length. There is no type (i.e., NativeEnumerated_t, any integer type - * will do). - * This type may be used when integer range is limited by subtype constraints. - */ -#ifndef _NativeEnumerated_H_ -#define _NativeEnumerated_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; -extern asn_TYPE_operation_t asn_OP_NativeEnumerated; - -xer_type_encoder_f NativeEnumerated_encode_xer; -oer_type_decoder_f NativeEnumerated_decode_oer; -oer_type_encoder_f NativeEnumerated_encode_oer; -per_type_decoder_f NativeEnumerated_decode_uper; -per_type_encoder_f NativeEnumerated_encode_uper; -per_type_decoder_f NativeEnumerated_decode_aper; -per_type_encoder_f NativeEnumerated_encode_aper; - -#define NativeEnumerated_free NativeInteger_free -#define NativeEnumerated_print NativeInteger_print -#define NativeEnumerated_compare NativeInteger_compare -#define NativeEnumerated_random_fill NativeInteger_random_fill -#define NativeEnumerated_constraint asn_generic_no_constraint -#define NativeEnumerated_decode_ber NativeInteger_decode_ber -#define NativeEnumerated_encode_der NativeInteger_encode_der -#define NativeEnumerated_decode_xer NativeInteger_decode_xer - -#ifdef __cplusplus -} -#endif - -#endif /* _NativeEnumerated_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeInteger.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeInteger.c deleted file mode 100644 index 316e872..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeInteger.c +++ /dev/null @@ -1,550 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeInteger basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeInteger = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeInteger_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeInteger_decode_oer, /* OER decoder */ - NativeInteger_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeInteger_decode_uper, /* Unaligned PER decoder */ - NativeInteger_encode_uper, /* Unaligned PER encoder */ - NativeInteger_decode_aper, /* Aligned PER decoder */ - NativeInteger_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeInteger_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeInteger = { - "INTEGER", /* The ASN.1 type is still INTEGER */ - "INTEGER", - &asn_OP_NativeInteger, - asn_DEF_NativeInteger_tags, - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - asn_DEF_NativeInteger_tags, /* Same as above */ - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode INTEGER type. - */ -asn_dec_rval_t -NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **nint_ptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - long *native = (long *)*nint_ptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(native == NULL) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(native == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * ASN.1 encoded INTEGER: buf_ptr, length - * Fill the native, at the same time checking for overflow. - * If overflow occured, return with RC_FAIL. - */ - { - INTEGER_t tmp; - union { - const void *constbuf; - void *nonconstbuf; - } unconst_buf; - long l; - - unconst_buf.constbuf = buf_ptr; - tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; - tmp.size = length; - - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&tmp, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - - *native = l; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", - (long)rval.consumed, (long)length, td->name, (long)*native); - - return rval; -} - -/* - * Encode the NativeInteger using the standard INTEGER type DER encoder. - */ -asn_enc_rval_t -NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ - asn_enc_rval_t erval = {0,0,0}; - INTEGER_t tmp; - -#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ - - tmp.buf = (uint8_t *)&native; - tmp.size = sizeof(native); - -#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ - uint8_t buf[sizeof(native)]; - uint8_t *p; - - /* Prepare a fake INTEGER */ - for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) - *p = (uint8_t)native; - - tmp.buf = buf; - tmp.size = sizeof(buf); -#endif /* WORDS_BIGENDIAN */ - - /* Encode fake INTEGER */ - erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); - if(erval.structure_ptr == &tmp) { - erval.structure_ptr = ptr; - } - return erval; -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -asn_dec_rval_t -NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - INTEGER_t st; - void *st_ptr = (void *)&st; - long *native = (long *)*sptr; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&st, 0, sizeof(st)); - rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, - opt_mname, buf_ptr, size); - if(rval.code == RC_OK) { - long l; - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&st, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - } else { - *native = l; - } - } else { - /* - * Cannot restart from the middle; - * there is no place to save state in the native type. - * Request a continuation from the very beginning. - */ - rval.consumed = 0; - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); - return rval; -} - - -asn_enc_rval_t -NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit int */ - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - er.encoded = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) - || cb(scratch, er.encoded, app_key) < 0) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_uper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -asn_dec_rval_t -NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_aper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -/* - * INTEGER specific human-readable output. - */ -int -NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - const long *native = (const long *)sptr; - char scratch[32]; /* Enough for 64-bit int */ - int ret; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(native) { - long value = *native; - ret = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) ? "%lu" : "%ld", value); - assert(ret > 0 && (size_t)ret < sizeof(scratch)); - if(cb(scratch, ret, app_key) < 0) return -1; - if(specs && (value >= 0 || !specs->field_unsigned)) { - const asn_INTEGER_enum_map_t *el = - INTEGER_map_value2enum(specs, value); - if(el) { - if(cb(" (", 2, app_key) < 0) return -1; - if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; - if(cb(")", 1, app_key) < 0) return -1; - } - } - return 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", - td->name, method, ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(long)); - break; - } -} - -int -NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - (void)td; - - if(aptr && bptr) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - const unsigned long *a = aptr; - const unsigned long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } else { - const long *a = aptr; - const long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } - } else if(!aptr) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - long *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (long *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - *sptr = st; - *st = value; - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeInteger.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeInteger.h deleted file mode 100644 index c74406a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/NativeInteger.h +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This type differs from the standard INTEGER in that it is modelled using - * the fixed machine type (long, int, short), so it can hold only values of - * limited length. There is no type (i.e., NativeInteger_t, any integer type - * will do). - * This type may be used when integer range is limited by subtype constraints. - */ -#ifndef _NativeInteger_H_ -#define _NativeInteger_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; -extern asn_TYPE_operation_t asn_OP_NativeInteger; - -asn_struct_free_f NativeInteger_free; -asn_struct_print_f NativeInteger_print; -asn_struct_compare_f NativeInteger_compare; -ber_type_decoder_f NativeInteger_decode_ber; -der_type_encoder_f NativeInteger_encode_der; -xer_type_decoder_f NativeInteger_decode_xer; -xer_type_encoder_f NativeInteger_encode_xer; -oer_type_decoder_f NativeInteger_decode_oer; -oer_type_encoder_f NativeInteger_encode_oer; -per_type_decoder_f NativeInteger_decode_uper; -per_type_encoder_f NativeInteger_encode_uper; -per_type_decoder_f NativeInteger_decode_aper; -per_type_encoder_f NativeInteger_encode_aper; -asn_random_fill_f NativeInteger_random_fill; - -#define NativeInteger_constraint asn_generic_no_constraint - -#ifdef __cplusplus -} -#endif - -#endif /* _NativeInteger_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/OCTET_STRING.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/OCTET_STRING.c deleted file mode 100644 index 432ce5a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/OCTET_STRING.c +++ /dev/null @@ -1,2409 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* for .bits_unused member */ -#include - -/* - * OCTET STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { - sizeof(OCTET_STRING_t), - offsetof(OCTET_STRING_t, _asn_ctx), - ASN_OSUBV_STR -}; - -asn_TYPE_operation_t asn_OP_OCTET_STRING = { - OCTET_STRING_free, - OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - OCTET_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { - "OCTET STRING", /* Canonical name */ - "OCTET_STRING", /* XML tag name */ - &asn_OP_OCTET_STRING, - asn_DEF_OCTET_STRING_tags, - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - asn_DEF_OCTET_STRING_tags, /* Same as above */ - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs -}; - -#undef _CH_PHASE -#undef NEXT_PHASE -#undef PREV_PHASE -#define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ - } while(0) -#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) -#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -#undef APPEND -#define APPEND(bufptr, bufsize) do { \ - size_t _bs = (bufsize); /* Append size */ \ - size_t _ns = ctx->context; /* Allocated now */ \ - size_t _es = st->size + _bs; /* Expected size */ \ - /* int is really a typeof(st->size): */ \ - if((int)_es < 0) RETURN(RC_FAIL); \ - if(_ns <= _es) { \ - void *ptr; \ - /* Be nice and round to the memory allocator */ \ - do { _ns = _ns ? _ns << 1 : 16; } \ - while(_ns <= _es); \ - /* int is really a typeof(st->size): */ \ - if((int)_ns < 0) RETURN(RC_FAIL); \ - ptr = REALLOC(st->buf, _ns); \ - if(ptr) { \ - st->buf = (uint8_t *)ptr; \ - ctx->context = _ns; \ - } else { \ - RETURN(RC_FAIL); \ - } \ - ASN_DEBUG("Reallocating into %ld", (long)_ns); \ - } \ - memcpy(st->buf + st->size, bufptr, _bs); \ - /* Convenient nul-termination */ \ - st->buf[_es] = '\0'; \ - st->size = _es; \ - } while(0) - -/* - * The main reason why ASN.1 is still alive is that too much time and effort - * is necessary for learning it more or less adequately, thus creating a gut - * necessity to demonstrate that aquired skill everywhere afterwards. - * No, I am not going to explain what the following stuff is. - */ -struct _stack_el { - ber_tlv_len_t left; /* What's left to read (or -1) */ - ber_tlv_len_t got; /* What was actually processed */ - unsigned cont_level; /* Depth of subcontainment */ - int want_nulls; /* Want null "end of content" octets? */ - int bits_chopped; /* Flag in BIT STRING mode */ - ber_tlv_tag_t tag; /* For debugging purposes */ - struct _stack_el *prev; - struct _stack_el *next; -}; -struct _stack { - struct _stack_el *tail; - struct _stack_el *cur_ptr; -}; - -static struct _stack_el * -OS__add_stack_el(struct _stack *st) { - struct _stack_el *nel; - - /* - * Reuse the old stack frame or allocate a new one. - */ - if(st->cur_ptr && st->cur_ptr->next) { - nel = st->cur_ptr->next; - nel->bits_chopped = 0; - nel->got = 0; - /* Retain the nel->cont_level, it's correct. */ - } else { - nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); - if(nel == NULL) - return NULL; - - if(st->tail) { - /* Increase a subcontainment depth */ - nel->cont_level = st->tail->cont_level + 1; - st->tail->next = nel; - } - nel->prev = st->tail; - st->tail = nel; - } - - st->cur_ptr = nel; - - return nel; -} - -static struct _stack * -_new_stack(void) { - return (struct _stack *)CALLOC(1, sizeof(struct _stack)); -} - -/* - * Decode OCTET STRING type. - */ -asn_dec_rval_t -OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - asn_dec_rval_t rval; - asn_struct_ctx_t *ctx; - ssize_t consumed_myself = 0; - struct _stack *stck; /* Expectations stack structure */ - struct _stack_el *sel = 0; /* Stack element */ - int tlv_constr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - - ASN_DEBUG("Decoding %s as %s (frame %ld)", - td->name, - (type_variant == ASN_OSUBV_STR) ? - "OCTET STRING" : "OS-SpecialCase", - (long)size); - - /* - * Create the string if does not exist. - */ - if(st == NULL) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) RETURN(RC_FAIL); - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - switch(ctx->phase) { - case 0: - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, ctx, - buf_ptr, size, tag_mode, -1, - &ctx->left, &tlv_constr); - if(rval.code != RC_OK) - return rval; - - if(tlv_constr) { - /* - * Complex operation, requires stack of expectations. - */ - ctx->ptr = _new_stack(); - if(!ctx->ptr) { - RETURN(RC_FAIL); - } - } else { - /* - * Jump into stackless primitive decoding. - */ - _CH_PHASE(ctx, 3); - if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) - APPEND(buf_ptr, rval.consumed); - ADVANCE(rval.consumed); - goto phase3; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - phase1: - /* - * Fill the stack with expectations. - */ - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - do { - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_tag_t expected_tag; - ssize_t tl, ll, tlvl; - /* This one works even if (sel->left == -1) */ - size_t Left = ((!sel||(size_t)sel->left >= size) - ?size:(size_t)sel->left); - - - ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)(sel?sel->got:0) - ); - if(sel && sel->left <= 0 && sel->want_nulls == 0) { - if(sel->prev) { - struct _stack_el *prev = sel->prev; - if(prev->left != -1) { - if(prev->left < sel->got) - RETURN(RC_FAIL); - prev->left -= sel->got; - } - prev->got += sel->got; - sel = stck->cur_ptr = prev; - if(!sel) break; - tlv_constr = 1; - continue; - } else { - sel = stck->cur_ptr = 0; - break; /* Nothing to wait */ - } - } - - tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); - ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", - (long)size, (long)Left, sel?"":"!", - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)tl); - switch(tl) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); - - ll = ber_fetch_length(tlv_constr, - (const char *)buf_ptr + tl,Left - tl,&tlv_len); - ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", - ber_tlv_tag_string(tlv_tag), tlv_constr, - (long)Left, (long)tl, (long)tlv_len, (long)ll); - switch(ll) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - if(sel && sel->want_nulls - && ((const uint8_t *)buf_ptr)[0] == 0 - && ((const uint8_t *)buf_ptr)[1] == 0) - { - - ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); - - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND("\0\0", 2); - - ADVANCE(2); - sel->got += 2; - if(sel->left != -1) { - sel->left -= 2; /* assert(sel->left >= 2) */ - } - - sel->want_nulls--; - if(sel->want_nulls == 0) { - /* Move to the next expectation */ - sel->left = 0; - tlv_constr = 1; - } - - continue; - } - - /* - * Set up expected tags, - * depending on ASN.1 type being decoded. - */ - switch(type_variant) { - case ASN_OSUBV_BIT: - /* X.690: 8.6.4.1, NOTE 2 */ - /* Fall through */ - case ASN_OSUBV_STR: - default: - if(sel) { - unsigned level = sel->cont_level; - if(level < td->all_tags_count) { - expected_tag = td->all_tags[level]; - break; - } else if(td->all_tags_count) { - expected_tag = td->all_tags - [td->all_tags_count - 1]; - break; - } - /* else, Fall through */ - } - /* Fall through */ - case ASN_OSUBV_ANY: - expected_tag = tlv_tag; - break; - } - - - if(tlv_tag != expected_tag) { - char buf[2][32]; - ber_tlv_tag_snprint(tlv_tag, - buf[0], sizeof(buf[0])); - ber_tlv_tag_snprint(td->tags[td->tags_count-1], - buf[1], sizeof(buf[1])); - ASN_DEBUG("Tag does not match expectation: %s != %s", - buf[0], buf[1]); - RETURN(RC_FAIL); - } - - tlvl = tl + ll; /* Combined length of T and L encoding */ - if((tlv_len + tlvl) < 0) { - /* tlv_len value is too big */ - ASN_DEBUG("TLV encoding + length (%ld) is too big", - (long)tlv_len); - RETURN(RC_FAIL); - } - - /* - * Append a new expectation. - */ - sel = OS__add_stack_el(stck); - if(!sel) RETURN(RC_FAIL); - - sel->tag = tlv_tag; - - sel->want_nulls = (tlv_len==-1); - if(sel->prev && sel->prev->left != -1) { - /* Check that the parent frame is big enough */ - if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) - RETURN(RC_FAIL); - if(tlv_len == -1) - sel->left = sel->prev->left - tlvl; - else - sel->left = tlv_len; - } else { - sel->left = tlv_len; - } - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND(buf_ptr, tlvl); - sel->got += tlvl; - ADVANCE(tlvl); - - ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", - (long)sel->got, (long)sel->left, - sel->want_nulls, sel->cont_level); - - } while(tlv_constr); - if(sel == NULL) { - /* Finished operation, "phase out" */ - ASN_DEBUG("Phase out"); - _CH_PHASE(ctx, +3); - break; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 2: - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", - (long)sel->left, (long)size, (long)sel->got, - sel->want_nulls); - { - ber_tlv_len_t len; - - assert(sel->left >= 0); - - len = ((ber_tlv_len_t)size < sel->left) - ? (ber_tlv_len_t)size : sel->left; - if(len > 0) { - if(type_variant == ASN_OSUBV_BIT - && sel->bits_chopped == 0) { - /* Put the unused-bits-octet away */ - st->bits_unused = *(const uint8_t *)buf_ptr; - APPEND(((const char *)buf_ptr+1), (len - 1)); - sel->bits_chopped = 1; - } else { - APPEND(buf_ptr, len); - } - ADVANCE(len); - sel->left -= len; - sel->got += len; - } - - if(sel->left) { - ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", - (long)sel->left, (long)size, sel->want_nulls); - RETURN(RC_WMORE); - } - - PREV_PHASE(ctx); - goto phase1; - } - break; - case 3: - phase3: - /* - * Primitive form, no stack required. - */ - assert(ctx->left >= 0); - - if(size < (size_t)ctx->left) { - if(!size) RETURN(RC_WMORE); - if(type_variant == ASN_OSUBV_BIT && !ctx->context) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, size); - assert(ctx->context > 0); - ctx->left -= size; - ADVANCE(size); - RETURN(RC_WMORE); - } else { - if(type_variant == ASN_OSUBV_BIT - && !ctx->context && ctx->left) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, ctx->left); - ADVANCE(ctx->left); - ctx->left = 0; - - NEXT_PHASE(ctx); - } - break; - } - - if(sel) { - ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", - (void *)sel->prev, sel->want_nulls, - (long)sel->left, (long)sel->got, (long)size); - if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { - RETURN(RC_WMORE); - } - } - - /* - * BIT STRING-specific processing. - */ - if(type_variant == ASN_OSUBV_BIT) { - if(st->size) { - if(st->bits_unused < 0 || st->bits_unused > 7) { - RETURN(RC_FAIL); - } - /* Finalize BIT STRING: zero out unused bits. */ - st->buf[st->size-1] &= 0xff << st->bits_unused; - } else { - if(st->bits_unused) { - RETURN(RC_FAIL); - } - } - } - - ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", - (long)consumed_myself, td->name, - (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", - (long)st->size); - - - RETURN(RC_OK); -} - -/* - * Encode OCTET STRING type using DER. - */ -asn_enc_rval_t -OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 0, 0, 0 }; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - int fix_last_byte = 0; - - ASN_DEBUG("%s %s as OCTET STRING", - cb?"Estimating":"Encoding", td->name); - - /* - * Write tags. - */ - if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { - er.encoded = der_write_tags(td, - (type_variant == ASN_OSUBV_BIT) + st->size, - tag_mode, type_variant == ASN_OSUBV_ANY, tag, - cb, app_key); - if(er.encoded == -1) { - er.failed_type = td; - er.structure_ptr = sptr; - return er; - } - } else { - /* Disallow: [] IMPLICIT ANY */ - assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); - er.encoded = 0; - } - - if(!cb) { - er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; - ASN__ENCODED_OK(er); - } - - /* - * Prepare to deal with the last octet of BIT STRING. - */ - if(type_variant == ASN_OSUBV_BIT) { - uint8_t b = st->bits_unused & 0x07; - if(b && st->size) fix_last_byte = 1; - ASN__CALLBACK(&b, 1); - } - - /* Invoke callback for the main part of the buffer */ - ASN__CALLBACK(st->buf, st->size - fix_last_byte); - - /* The last octet should be stripped off the unused bits */ - if(fix_last_byte) { - uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); - ASN__CALLBACK(&b, 1); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_enc_rval_t -OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - if(flags & XER_F_CANONICAL) { - char *scend = scratch + (sizeof(scratch) - 2); - for(; buf < end; buf++) { - if(p >= scend) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - } - - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - } else { - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - ASN__CALLBACK(scratch, p-scratch); - p = scratch; - ASN__TEXT_INDENT(1, ilevel); - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - if(p - scratch) { - p--; /* Remove the tail space */ - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - if(st->size > 16) - ASN__TEXT_INDENT(1, ilevel-1); - } - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -static const struct OCTET_STRING__xer_escape_table_s { - const char *string; - int size; -} OCTET_STRING__xer_escape_table[] = { -#define OSXET(s) { s, sizeof(s) - 1 } - OSXET("\074\156\165\154\057\076"), /* */ - OSXET("\074\163\157\150\057\076"), /* */ - OSXET("\074\163\164\170\057\076"), /* */ - OSXET("\074\145\164\170\057\076"), /* */ - OSXET("\074\145\157\164\057\076"), /* */ - OSXET("\074\145\156\161\057\076"), /* */ - OSXET("\074\141\143\153\057\076"), /* */ - OSXET("\074\142\145\154\057\076"), /* */ - OSXET("\074\142\163\057\076"), /* */ - OSXET("\011"), /* \t */ - OSXET("\012"), /* \n */ - OSXET("\074\166\164\057\076"), /* */ - OSXET("\074\146\146\057\076"), /* */ - OSXET("\015"), /* \r */ - OSXET("\074\163\157\057\076"), /* */ - OSXET("\074\163\151\057\076"), /* */ - OSXET("\074\144\154\145\057\076"), /* */ - OSXET("\074\144\143\061\057\076"), /* */ - OSXET("\074\144\143\062\057\076"), /* */ - OSXET("\074\144\143\063\057\076"), /* */ - OSXET("\074\144\143\064\057\076"), /* */ - OSXET("\074\156\141\153\057\076"), /* */ - OSXET("\074\163\171\156\057\076"), /* */ - OSXET("\074\145\164\142\057\076"), /* */ - OSXET("\074\143\141\156\057\076"), /* */ - OSXET("\074\145\155\057\076"), /* */ - OSXET("\074\163\165\142\057\076"), /* */ - OSXET("\074\145\163\143\057\076"), /* */ - OSXET("\074\151\163\064\057\076"), /* */ - OSXET("\074\151\163\063\057\076"), /* */ - OSXET("\074\151\163\062\057\076"), /* */ - OSXET("\074\151\163\061\057\076"), /* */ - { 0, 0 }, /* " " */ - { 0, 0 }, /* ! */ - { 0, 0 }, /* \" */ - { 0, 0 }, /* # */ - { 0, 0 }, /* $ */ - { 0, 0 }, /* % */ - OSXET("\046\141\155\160\073"), /* & */ - { 0, 0 }, /* ' */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ - {0,0},{0,0},{0,0},{0,0}, /* 89:; */ - OSXET("\046\154\164\073"), /* < */ - { 0, 0 }, /* = */ - OSXET("\046\147\164\073"), /* > */ -}; - -static int -OS__check_escaped_control_char(const void *buf, int size) { - size_t i; - /* - * Inefficient algorithm which translates the escape sequences - * defined above into characters. Returns -1 if not found. - * TODO: replace by a faster algorithm (bsearch(), hash or - * nested table lookups). - */ - for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { - const struct OCTET_STRING__xer_escape_table_s *el; - el = &OCTET_STRING__xer_escape_table[i]; - if(el->size == size && memcmp(buf, el->string, size) == 0) - return i; - } - return -1; -} - -static int -OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { - /* - * This might be one of the escape sequences - * for control characters. Check it out. - * #11.15.5 - */ - int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); - if(control_char >= 0) { - OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; - void *p = REALLOC(st->buf, st->size + 2); - if(p) { - st->buf = (uint8_t *)p; - st->buf[st->size++] = control_char; - st->buf[st->size] = '\0'; /* nul-termination */ - return 0; - } - } - - return -1; /* No, it's not */ -} - -asn_enc_rval_t -OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - uint8_t *buf, *end; - uint8_t *ss; /* Sequence start */ - ssize_t encoded_len = 0; - - (void)ilevel; /* Unused argument */ - (void)flags; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - buf = st->buf; - end = buf + st->size; - for(ss = buf; buf < end; buf++) { - unsigned int ch = *buf; - int s_len; /* Special encoding sequence length */ - - /* - * Escape certain characters: X.680/11.15 - */ - if(ch < sizeof(OCTET_STRING__xer_escape_table) - /sizeof(OCTET_STRING__xer_escape_table[0]) - && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { - if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) - || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, - app_key) < 0) - ASN__ENCODE_FAILED; - encoded_len += (buf - ss) + s_len; - ss = buf + 1; - } - } - - encoded_len += (buf - ss); - if((buf - ss) && cb(ss, buf - ss, app_key) < 0) - ASN__ENCODE_FAILED; - - er.encoded = encoded_len; - ASN__ENCODED_OK(er); -} - -/* - * Convert from hexadecimal format (cstring): "AB CD EF" - */ -static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *chunk_stop = (const char *)chunk_buf; - const char *p = chunk_stop; - const char *pend = p + chunk_size; - unsigned int clv = 0; - int half = 0; /* Half bit */ - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 1) / 2; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * If something like " a b c " appears here, the " a b":3 will be - * converted, and the rest skipped. That is, unless buf_size is greater - * than chunk_size, then it'll be equivalent to "ABC0". - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - continue; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - clv = (clv << 4) + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - clv = (clv << 4) + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - clv = (clv << 4) + (ch - 0x61 + 10); - break; - default: - *buf = 0; /* JIC */ - return -1; - } - if(half++) { - half = 0; - *buf++ = clv; - chunk_stop = p + 1; - } - } - - /* - * Check partial decoding. - */ - if(half) { - if(have_more) { - /* - * Partial specification is fine, - * because no more more PXER_TEXT data is available. - */ - *buf++ = clv << 4; - chunk_stop = p; - } - } else { - chunk_stop = p; - } - - st->size = buf - st->buf; /* Adjust the buffer size */ - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return (chunk_stop - (const char *)chunk_buf); /* Converted size */ -} - -/* - * Convert from binary format: "00101011101" - */ -static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - int bits_unused = st->bits_unused & 0x7; - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 7) / 8; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - (void)have_more; - - if(bits_unused == 0) - bits_unused = 8; - else if(st->size) - buf--; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - break; - case 0x30: - case 0x31: - if(bits_unused-- <= 0) { - *++buf = 0; /* Clean the cell */ - bits_unused = 7; - } - *buf |= (ch&1) << bits_unused; - break; - default: - st->bits_unused = bits_unused; - return -1; - } - } - - if(bits_unused == 8) { - st->size = buf - st->buf; - st->bits_unused = 0; - } else { - st->size = buf - st->buf + 1; - st->bits_unused = bits_unused; - } - - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Something like strtod(), but with stricter rules. - */ -static int -OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { - const int32_t last_unicode_codepoint = 0x10ffff; - int32_t val = 0; - const char *p; - - for(p = buf; p < end; p++) { - int ch = *p; - - switch(ch) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - val = val * base + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - val = val * base + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - val = val * base + (ch - 0x61 + 10); - break; - case 0x3b: /* ';' */ - *ret_value = val; - return (p - buf) + 1; - default: - return -1; /* Character set error */ - } - - /* Value exceeds the Unicode range. */ - if(val > last_unicode_codepoint) { - return -1; - } - } - - *ret_value = -1; - return (p - buf); -} - -/* - * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" - */ -static ssize_t -OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, - size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - uint8_t *buf; - - /* Reallocate buffer */ - size_t new_size = st->size + chunk_size; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - int len; /* Length of the rest of the chunk */ - - if(ch != 0x26 /* '&' */) { - *buf++ = ch; - continue; /* That was easy... */ - } - - /* - * Process entity reference. - */ - len = chunk_size - (p - (const char *)chunk_buf); - if(len == 1 /* "&" */) goto want_more; - if(p[1] == 0x23 /* '#' */) { - const char *pval; /* Pointer to start of digits */ - int32_t val = 0; /* Entity reference value */ - int base; - - if(len == 2 /* "&#" */) goto want_more; - if(p[2] == 0x78 /* 'x' */) - pval = p + 3, base = 16; - else - pval = p + 2, base = 10; - len = OS__strtoent(base, pval, p + len, &val); - if(len == -1) { - /* Invalid charset. Just copy verbatim. */ - *buf++ = ch; - continue; - } - if(!len || pval[len-1] != 0x3b) goto want_more; - assert(val > 0); - p += (pval - p) + len - 1; /* Advance past entref */ - - if(val < 0x80) { - *buf++ = (char)val; - } else if(val < 0x800) { - *buf++ = 0xc0 | ((val >> 6)); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x10000) { - *buf++ = 0xe0 | ((val >> 12)); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x200000) { - *buf++ = 0xf0 | ((val >> 18)); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x4000000) { - *buf++ = 0xf8 | ((val >> 24)); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else { - *buf++ = 0xfc | ((val >> 30) & 0x1); - *buf++ = 0x80 | ((val >> 24) & 0x3f); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } - } else { - /* - * Ugly, limited parsing of & > < - */ - char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); - if(!sc) goto want_more; - if((sc - p) == 4 - && p[1] == 0x61 /* 'a' */ - && p[2] == 0x6d /* 'm' */ - && p[3] == 0x70 /* 'p' */) { - *buf++ = 0x26; - p = sc; - continue; - } - if((sc - p) == 3) { - if(p[1] == 0x6c) { - *buf = 0x3c; /* '<' */ - } else if(p[1] == 0x67) { - *buf = 0x3e; /* '>' */ - } else { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - if(p[2] != 0x74) { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - buf++; - p = sc; - continue; - } - /* Unsupported entity reference */ - *buf++ = ch; - } - - continue; - want_more: - if(have_more) { - /* - * We know that no more data (of the same type) - * is coming. Copy the rest verbatim. - */ - *buf++ = ch; - continue; - } - chunk_size = (p - (const char *)chunk_buf); - /* Processing stalled: need more data */ - break; - } - - st->size = buf - st->buf; - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Decode OCTET STRING from the XML element's body. - */ -static asn_dec_rval_t -OCTET_STRING__decode_xer( - const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size, int have_more)) { - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t *ctx; /* Per-structure parser context */ - asn_dec_rval_t rval; /* Return value from the decoder */ - int st_allocated; - - /* - * Create the string if does not exist. - */ - if(!st) { - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - *sptr = (void *)st; - if(!st) goto sta_failed; - st_allocated = 1; - } else { - st_allocated = 0; - } - if(!st->buf) { - /* This is separate from above section */ - st->buf = (uint8_t *)CALLOC(1, 1); - if(!st->buf) { - if(st_allocated) { - *sptr = 0; - goto stb_failed; - } else { - goto sta_failed; - } - } - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); - - return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, - buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); - -stb_failed: - FREEMEM(st); -sta_failed: - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; -} - -/* - * Decode OCTET STRING from the hexadecimal data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); -} - -/* - * Decode OCTET STRING from the binary (0/1) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_binary); -} - -/* - * Decode OCTET STRING from the string (ASCII/UTF-8) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, - OCTET_STRING__handle_control_chars, - OCTET_STRING__convert_entrefs); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -static int -OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", - (int)units, lb, ub, unit_bits); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Decode without translation */ - lb = 0; - } else if(pc && pc->code2value) { - if(unit_bits > 16) - return 1; /* FATAL: can't have constrained - * UniversalString with more than - * 16 million code points */ - for(; buf < end; buf += bpc) { - int value; - int code = per_get_few_bits(po, unit_bits); - if(code < 0) return -1; /* WMORE */ - value = pc->code2value(code); - if(value < 0) { - ASN_DEBUG("Code %d (0x%02x) is" - " not in map (%ld..%ld)", - code, code, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = value; break; - case 2: buf[0] = value >> 8; buf[1] = value; break; - case 4: buf[0] = value >> 24; buf[1] = value >> 16; - buf[2] = value >> 8; buf[3] = value; break; - } - } - return 0; - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_get_many_bits(po, buf, 0, unit_bits * units); - } - - for(; buf < end; buf += bpc) { - int32_t code = per_get_few_bits(po, unit_bits); - int32_t ch = code + lb; - if(code < 0) return -1; /* WMORE */ - if(ch > ub) { - ASN_DEBUG("Code %d is out of range (%ld..%ld)", - ch, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = ch; break; - case 2: buf[0] = ch >> 8; buf[1] = ch; break; - case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; - buf[2] = ch >> 8; buf[3] = ch; break; - } - } - - return 0; -} - -static int -OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - const uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", - (int)units, lb, ub, unit_bits, bpc); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Encode as is */ - lb = 0; - } else if(pc && pc->value2code) { - for(; buf < end; buf += bpc) { - int code; - uint32_t value; - switch(bpc) { - case 1: value = *(const uint8_t *)buf; break; - case 2: value = (buf[0] << 8) | buf[1]; break; - case 4: value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; break; - default: return -1; - } - code = pc->value2code(value); - if(code < 0) { - ASN_DEBUG("Character %d (0x%02x) is" - " not in map (%ld..%ld)", - *buf, *buf, lb, ub); - return -1; - } - if(per_put_few_bits(po, code, unit_bits)) - return -1; - } - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_put_many_bits(po, buf, unit_bits * units); - } - - for(ub -= lb; buf < end; buf += bpc) { - int ch; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - ch = value - lb; - if(ch < 0 || ch > ub) { - ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, - value, lb, ub + lb); - return -1; - } - if(per_put_few_bits(po, ch, unit_bits)) return -1; - } - - return 0; -} - -static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { - { APC_CONSTRAINED, 8, 8, 0, 255 }, - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, - 0, 0 -}; - -asn_dec_rval_t -OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if(bpc) { - ASN_DEBUG("Encoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Encoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len * bpc; - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, - bpc, unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - size_t size_in_units; - const uint8_t *buf; - int ret; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN__ENCODE_FAILED; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - size_in_units = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - size_in_units = st->size >> 1; - if(st->size & 1) { - ASN_DEBUG("%s string size is not modulo 2", td->name); - ASN__ENCODE_FAILED; - } - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - size_in_units = st->size >> 2; - if(st->size & 3) { - ASN_DEBUG("%s string size is not modulo 4", td->name); - ASN__ENCODE_FAILED; - } - break; - } - - ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_units, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_units < csiz->lower_bound - || (ssize_t)size_in_units > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, - size_in_units - csiz->lower_bound, csiz->effective_bits); - ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, - unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, - need_eom ? ",+EOM" : ""); - - ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, - cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save * bpc; - size_in_units -= may_save; - assert(!(may_save & 0x07) || !size_in_units); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_units); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: -/* case ASN_OSUBV_ANY: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); -*/ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; -*/ - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - cval = &asn_DEF_OCTET_STRING_constraints.value; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - if(bpc) { - ASN_DEBUG("Decoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Decoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - if(bpc == 0) { - int ubs = (csiz->upper_bound & 0x7); - st->bits_unused = ubs ? 8 - ubs : 0; - } - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - if (csiz->upper_bound - csiz->lower_bound == 0) - /* Indefinite length case */ - raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); - else - raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); - repeat = 0; - if(raw_len < 0) RETURN(RC_WMORE); - raw_len += csiz->lower_bound; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - - if (raw_len > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - - if(bpc) { - len_bytes = raw_len * bpc; - len_bits = len_bytes * unit_bits; - } else { - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) - st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - } - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - if(bpc) { - ret = OCTET_STRING_per_get_characters(pd, - &st->buf[st->size], raw_len, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ret = per_get_many_bits(pd, &st->buf[st->size], - 0, len_bits); - } - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - unsigned int sizeinunits; - const uint8_t *buf; - int ret; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - /* case ASN_OSUBV_ANY: - ASN__ENCODE_FAILED; - */ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - sizeinunits = st->size * 8 - (st->bits_unused & 0x07); - ASN_DEBUG("BIT STRING of %d bytes", - sizeinunits); - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = 8; -*/ - bpc = OS__BPC_CHAR; - sizeinunits = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - sizeinunits = st->size / 2; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - sizeinunits = st->size / 4; - break; - } - - ASN_DEBUG("Encoding %s into %d units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, sizeinunits, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out wheter size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((int)sizeinunits < csiz->lower_bound - || (int)sizeinunits > csiz->upper_bound) { - if(ct_extensible) { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else - ASN__ENCODE_FAILED; - } - } else { - inext = 0; - } - - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits >= 0) { - ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", - st->size, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - if (csiz->effective_bits > 0) { - ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); - if(ret) ASN__ENCODE_FAILED; - } - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - } - if(bpc) { - ret = OCTET_STRING_per_put_characters(po, st->buf, - sizeinunits, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - } else { - ret = per_put_many_bits(po, st->buf, - sizeinunits * unit_bits); - } - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %lu bytes", st->size); - - if(sizeinunits == 0) { - if(aper_put_length(po, -1, 0)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - buf = st->buf; - while(sizeinunits) { - ssize_t maySave = aper_put_length(po, -1, sizeinunits); - - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %ld of %ld", - (long)maySave, (long)sizeinunits); - - if(bpc) { - ret = OCTET_STRING_per_put_characters(po, buf, - maySave, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - } else { - ret = per_put_many_bits(po, buf, maySave * unit_bits); - } - if(ret) ASN__ENCODE_FAILED; - - if(bpc) - buf += maySave * bpc; - else - buf += maySave >> 3; - sizeinunits -= maySave; - assert(!(maySave & 0x07) || !sizeinunits); - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - (void)td; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - _i_INDENT(1); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Remove the tail space */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - return 0; -} - -int -OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, - void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st && (st->buf || !st->size)) { - return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const asn_OCTET_STRING_specifics_t *specs; - asn_struct_ctx_t *ctx; - struct _stack *stck; - - if(!td || !st) - return; - - specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - ASN_DEBUG("Freeing %s as OCTET STRING", td->name); - - if(st->buf) { - FREEMEM(st->buf); - st->buf = 0; - } - - /* - * Remove decode-time stack. - */ - stck = (struct _stack *)ctx->ptr; - if(stck) { - while(stck->tail) { - struct _stack_el *sel = stck->tail; - stck->tail = sel->prev; - FREEMEM(sel); - } - FREEMEM(stck); - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, - td->specifics - ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) - ->struct_size - : sizeof(OCTET_STRING_t)); - break; - } -} - -/* - * Conversion routines. - */ -int -OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { - void *buf; - - if(st == 0 || (str == 0 && len)) { - errno = EINVAL; - return -1; - } - - /* - * Clear the OCTET STRING. - */ - if(str == NULL) { - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - return 0; - } - - /* Determine the original string size, if not explicitly given */ - if(len < 0) - len = strlen(str); - - /* Allocate and fill the memory */ - buf = MALLOC(len + 1); - if(buf == NULL) - return -1; - - memcpy(buf, str, len); - ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ - FREEMEM(st->buf); - st->buf = (uint8_t *)buf; - st->size = len; - - return 0; -} - -OCTET_STRING_t * -OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, - int len) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - OCTET_STRING_t *st; - - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - if(st && str && OCTET_STRING_fromBuf(st, str, len)) { - FREEMEM(st); - st = NULL; - } - - return st; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - const OCTET_STRING_t *a = aptr; - const OCTET_STRING_t *b = bptr; - - assert(!specs || specs->subvariant != ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - return 0; - } - } else { - return ret < 0 ? -1 : 1; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -/* - * Biased function for randomizing character values around their limits. - */ -static uint32_t -OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { - assert(lb <= ub); - switch(asn_random_between(0, 16)) { - case 0: - if(lb < ub) return lb + 1; - /* Fall through */ - case 1: - return lb; - case 2: - if(lb < ub) return ub - 1; - /* Fall through */ - case 3: - return ub; - default: - return asn_random_between(lb, ub); - } -} - - -size_t -OCTET_STRING_random_length_constrained( - const asn_TYPE_descriptor_t *td, - const asn_encoding_constraints_t *constraints, size_t max_length) { - const unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - size_t rnd_len; - - /* Figure out how far we should go */ - rnd_len = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length <= (size_t)pc->lower_bound) { - return pc->lower_bound; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_len = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_len = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_len from the table */ - if(rnd_len <= max_length) { - break; - } - /* Fall through */ - default: - rnd_len = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_len = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_len = asn_random_between(0, max_length); - } - } else if(rnd_len > max_length) { - rnd_len = asn_random_between(0, max_length); - } - - return rnd_len; -} - -asn_random_fill_result_t -OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - unsigned int unit_bytes = 1; - unsigned long clb = 0; /* Lower bound on char */ - unsigned long cub = 255; /* Higher bound on char value */ - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_len; - OCTET_STRING_t *st; - - if(max_length == 0 && !*sptr) return result_skipped; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - /* Handled by BIT_STRING itself. */ - return result_failed; - case ASN_OSUBV_STR: - unit_bytes = 1; - clb = 0; - cub = 255; - break; - case ASN_OSUBV_U16: - unit_bytes = 2; - clb = 0; - cub = 65535; - break; - case ASN_OSUBV_U32: - unit_bytes = 4; - clb = 0; - cub = 0x10FFFF; - break; - } - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->value; - if(pc->flags & APC_SEMI_CONSTRAINED) { - clb = pc->lower_bound; - } else if(pc->flags & APC_CONSTRAINED) { - clb = pc->lower_bound; - cub = pc->upper_bound; - } - } - - rnd_len = - OCTET_STRING_random_length_constrained(td, constraints, max_length); - - buf = CALLOC(unit_bytes, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[unit_bytes * rnd_len]; - - switch(unit_bytes) { - case 1: - for(b = buf; b < bend; b += unit_bytes) { - *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); - } - *(uint8_t *)b = 0; - break; - case 2: - for(b = buf; b < bend; b += unit_bytes) { - uint32_t code = OCTET_STRING__random_char(clb, cub); - b[0] = code >> 8; - b[1] = code; - } - *(uint16_t *)b = 0; - break; - case 4: - for(b = buf; b < bend; b += unit_bytes) { - uint32_t code = OCTET_STRING__random_char(clb, cub); - b[0] = code >> 24; - b[1] = code >> 16; - b[2] = code >> 8; - b[3] = code; - } - *(uint32_t *)b = 0; - break; - } - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = unit_bytes * rnd_len; - - result_ok.length = st->size; - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/OCTET_STRING.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/OCTET_STRING.h deleted file mode 100644 index c2f8bae..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/OCTET_STRING.h +++ /dev/null @@ -1,102 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _OCTET_STRING_H_ -#define _OCTET_STRING_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct OCTET_STRING { - uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ - size_t size; /* Size of the buffer */ - - asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ -} OCTET_STRING_t; - -extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; -extern asn_TYPE_operation_t asn_OP_OCTET_STRING; - -asn_struct_free_f OCTET_STRING_free; -asn_struct_print_f OCTET_STRING_print; -asn_struct_print_f OCTET_STRING_print_utf8; -asn_struct_compare_f OCTET_STRING_compare; -ber_type_decoder_f OCTET_STRING_decode_ber; -der_type_encoder_f OCTET_STRING_encode_der; -xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ -xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ -xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ -xer_type_encoder_f OCTET_STRING_encode_xer; -xer_type_encoder_f OCTET_STRING_encode_xer_utf8; -oer_type_decoder_f OCTET_STRING_decode_oer; -oer_type_encoder_f OCTET_STRING_encode_oer; -per_type_decoder_f OCTET_STRING_decode_uper; -per_type_encoder_f OCTET_STRING_encode_uper; -per_type_decoder_f OCTET_STRING_decode_aper; -per_type_encoder_f OCTET_STRING_encode_aper; -asn_random_fill_f OCTET_STRING_random_fill; - -#define OCTET_STRING_constraint asn_generic_no_constraint -#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex - -/****************************** - * Handy conversion routines. * - ******************************/ - -/* - * This function clears the previous value of the OCTET STRING (if any) - * and then allocates a new memory with the specified content (str/size). - * If size = -1, the size of the original string will be determined - * using strlen(str). - * If str equals to NULL, the function will silently clear the - * current contents of the OCTET STRING. - * Returns 0 if it was possible to perform operation, -1 otherwise. - */ -int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); - -/* Handy conversion from the C string into the OCTET STRING. */ -#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) - -/* - * Allocate and fill the new OCTET STRING and return a pointer to the newly - * allocated object. NULL is permitted in str: the function will just allocate - * empty OCTET STRING. - */ -OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, - const char *str, int size); - -/**************************** - * Internally useful stuff. * - ****************************/ - -typedef struct asn_OCTET_STRING_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the structure */ - unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - enum asn_OS_Subvariant { - ASN_OSUBV_ANY, /* The open type (ANY) */ - ASN_OSUBV_BIT, /* BIT STRING */ - ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ - ASN_OSUBV_U16, /* 16-bit character (BMPString) */ - ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ - } subvariant; -} asn_OCTET_STRING_specifics_t; - -extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; - -size_t OCTET_STRING_random_length_constrained( - const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, - size_t max_length); - -#ifdef __cplusplus -} -#endif - -#endif /* _OCTET_STRING_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/OPEN_TYPE.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/OPEN_TYPE.c deleted file mode 100644 index a54e99c..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/OPEN_TYPE.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include -#include - -asn_TYPE_operation_t asn_OP_OPEN_TYPE = { - OPEN_TYPE_free, - OPEN_TYPE_print, - OPEN_TYPE_compare, - OPEN_TYPE_decode_ber, - OPEN_TYPE_encode_der, - OPEN_TYPE_decode_xer, - OPEN_TYPE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, 0, /* No OER support, use "-gen-OER" to enable */ -#else - OPEN_TYPE_decode_oer, - OPEN_TYPE_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - OPEN_TYPE_decode_uper, - OPEN_TYPE_encode_uper, - OPEN_TYPE_decode_aper, - OPEN_TYPE_encode_aper, -#endif - 0, /* Random fill is not supported for open type */ - 0 /* Use generic outmost tag fetcher */ -}; - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -asn_dec_rval_t -OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ASN_DEBUG("presence %d\n", selected.presence_index); - - rv = selected.type_descriptor->op->ber_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, - elm->tag_mode); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = consumed_myself; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case RC_FAIL: - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - break; - } - - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; -} - -asn_dec_rval_t -OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - int xer_context = 0; - ssize_t ch_size; - pxer_chunk_type_e ch_type; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - /* - * Confirm wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_OPENING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = selected.type_descriptor->op->xer_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_FAIL: - /* Point to a best position where failure occurred */ - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - /* Wrt. rv.consumed==0: - * In case a genuine RC_WMORE, the whole Open Type decoding - * will have to be restarted. - */ - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; - } - - /* - * Finalize wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_CLOSING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - rv.consumed += consumed_myself; - - return rv; -} - - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/OPEN_TYPE.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/OPEN_TYPE.h deleted file mode 100644 index b0d023c..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/OPEN_TYPE.h +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_OPEN_TYPE_H -#define ASN_OPEN_TYPE_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define OPEN_TYPE_free CHOICE_free -#define OPEN_TYPE_print CHOICE_print -#define OPEN_TYPE_compare CHOICE_compare -#define OPEN_TYPE_constraint CHOICE_constraint -#define OPEN_TYPE_decode_ber NULL -#define OPEN_TYPE_encode_der CHOICE_encode_der -#define OPEN_TYPE_decode_xer NULL -#define OPEN_TYPE_encode_xer CHOICE_encode_xer -#define OPEN_TYPE_decode_oer NULL -#define OPEN_TYPE_encode_oer CHOICE_encode_oer -#define OPEN_TYPE_decode_uper NULL -#define OPEN_TYPE_decode_aper NULL - -extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; - -/* - * Decode an Open Type which is potentially constraiend - * by the other members of the parent structure. - */ -asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - const void *ptr, size_t size); - -asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - const void *ptr, size_t size); - -asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - asn_TYPE_member_t *element, const void *ptr, - size_t size); - -asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - asn_per_data_t *pd); - -asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - asn_per_data_t *pd); - -asn_enc_rval_t OPEN_TYPE_encode_uper( - const asn_TYPE_descriptor_t *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -asn_enc_rval_t OPEN_TYPE_encode_aper( - const asn_TYPE_descriptor_t *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_OPEN_TYPE_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/PrintableString.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/PrintableString.c deleted file mode 100644 index 8fc3939..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/PrintableString.c +++ /dev/null @@ -1,130 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * ASN.1:1984 (X.409) - */ -static const int _PrintableString_alphabet[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int _PrintableString_code2value[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122}; - -/* - * PrintableString basic type description. - */ -static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ -}; -static int asn_DEF_PrintableString_v2c(unsigned int value) { - return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; -} -static int asn_DEF_PrintableString_c2v(unsigned int code) { - if(code < 74) - return _PrintableString_code2value[code]; - return -1; -} -static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { - { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ - asn_DEF_PrintableString_v2c, - asn_DEF_PrintableString_c2v -}; -asn_TYPE_operation_t asn_OP_PrintableString = { - OCTET_STRING_free, - OCTET_STRING_print_utf8, /* ASCII subset */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_utf8, - OCTET_STRING_encode_xer_utf8, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, - OCTET_STRING_encode_uper, - OCTET_STRING_decode_aper, - OCTET_STRING_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_PrintableString = { - "PrintableString", - "PrintableString", - &asn_OP_PrintableString, - asn_DEF_PrintableString_tags, - sizeof(asn_DEF_PrintableString_tags) - / sizeof(asn_DEF_PrintableString_tags[0]) - 1, - asn_DEF_PrintableString_tags, - sizeof(asn_DEF_PrintableString_tags) - / sizeof(asn_DEF_PrintableString_tags[0]), - { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - - -int -PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, - void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - - if(st && st->buf) { - uint8_t *buf = st->buf; - uint8_t *end = buf + st->size; - - /* - * Check the alphabet of the PrintableString. - * ASN.1:1984 (X.409) - */ - for(; buf < end; buf++) { - if(!_PrintableString_alphabet[*buf]) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value byte %ld (%d) " - "not in PrintableString alphabet " - "(%s:%d)", - td->name, - (long)((buf - st->buf) + 1), - *buf, - __FILE__, __LINE__); - return -1; - } - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/PrintableString.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/PrintableString.h deleted file mode 100644 index 8c2b61a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/PrintableString.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PrintableString_H_ -#define _PrintableString_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ - -extern asn_TYPE_descriptor_t asn_DEF_PrintableString; -extern asn_TYPE_operation_t asn_OP_PrintableString; - -asn_constr_check_f PrintableString_constraint; - -#define PrintableString_free OCTET_STRING_free -#define PrintableString_print OCTET_STRING_print_utf8 -#define PrintableString_compare OCTET_STRING_compare -#define PrintableString_decode_ber OCTET_STRING_decode_ber -#define PrintableString_encode_der OCTET_STRING_encode_der -#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 -#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 -#define PrintableString_decode_uper OCTET_STRING_decode_uper -#define PrintableString_encode_uper OCTET_STRING_encode_uper -#define PrintableString_decode_aper OCTET_STRING_decode_aper -#define PrintableString_encode_aper OCTET_STRING_encode_aper - -#ifdef __cplusplus -} -#endif - -#endif /* _PrintableString_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SEQUENCE_OF.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SEQUENCE_OF.c deleted file mode 100644 index ec952fc..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SEQUENCE_OF.c +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -typedef A_SEQUENCE_OF(void) asn_sequence; - -void -asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { - asn_sequence *as = (asn_sequence *)asn_sequence_of_x; - - if(as) { - void *ptr; - int n; - - if(number < 0 || number >= as->count) - return; /* Nothing to delete */ - - if(_do_free && as->free) { - ptr = as->array[number]; - } else { - ptr = 0; - } - - /* - * Shift all elements to the left to hide the gap. - */ - --as->count; - for(n = number; n < as->count; n++) - as->array[n] = as->array[n+1]; - - /* - * Invoke the third-party function only when the state - * of the parent structure is consistent. - */ - if(ptr) as->free(ptr); - } -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SEQUENCE_OF.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SEQUENCE_OF.h deleted file mode 100644 index e35bc44..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SEQUENCE_OF.h +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_SEQUENCE_OF_H -#define ASN_SEQUENCE_OF_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * SEQUENCE OF is the same as SET OF with a tiny difference: - * the delete operation preserves the initial order of elements - * and thus MAY operate in non-constant time. - */ -#define A_SEQUENCE_OF(type) A_SET_OF(type) - -#define ASN_SEQUENCE_ADD(headptr, ptr) \ - asn_sequence_add((headptr), (ptr)) - -/*********************************************** - * Implementation of the SEQUENCE OF structure. - */ - -#define asn_sequence_add asn_set_add -#define asn_sequence_empty asn_set_empty - -/* - * Delete the element from the set by its number (base 0). - * This is NOT a constant-time operation. - * The order of elements is preserved. - * If _do_free is given AND the (*free) is initialized, the element - * will be freed using the custom (*free) function as well. - */ -void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); - -/* - * Cope with different conversions requirements to/from void in C and C++. - * This is mostly useful for support library. - */ -typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; -#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) -#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_SEQUENCE_OF_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SET_OF.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SET_OF.c deleted file mode 100644 index 944f2cb..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SET_OF.c +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Add another element into the set. - */ -int -asn_set_add(void *asn_set_of_x, void *ptr) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as == 0 || ptr == 0) { - errno = EINVAL; /* Invalid arguments */ - return -1; - } - - /* - * Make sure there's enough space to insert an element. - */ - if(as->count == as->size) { - int _newsize = as->size ? (as->size << 1) : 4; - void *_new_arr; - _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); - if(_new_arr) { - as->array = (void **)_new_arr; - as->size = _newsize; - } else { - /* ENOMEM */ - return -1; - } - } - - as->array[as->count++] = ptr; - - return 0; -} - -void -asn_set_del(void *asn_set_of_x, int number, int _do_free) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as) { - void *ptr; - if(number < 0 || number >= as->count) - return; - - if(_do_free && as->free) { - ptr = as->array[number]; - } else { - ptr = 0; - } - - as->array[number] = as->array[--as->count]; - - /* - * Invoke the third-party function only when the state - * of the parent structure is consistent. - */ - if(ptr) as->free(ptr); - } -} - -/* - * Free the contents of the set, do not free the set itself. - */ -void -asn_set_empty(void *asn_set_of_x) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as) { - if(as->array) { - if(as->free) { - while(as->count--) - as->free(as->array[as->count]); - } - FREEMEM(as->array); - as->array = 0; - } - as->count = 0; - as->size = 0; - } - -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SET_OF.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SET_OF.h deleted file mode 100644 index 882e1a4..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_SET_OF.h +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_SET_OF_H -#define ASN_SET_OF_H - -#ifdef __cplusplus -#define A_SET_OF(type) \ - struct { \ - type **array; \ - int count; /* Meaningful size */ \ - int size; /* Allocated size */ \ - void (*free)(decltype(*array)); \ - } -#else /* C */ -#define A_SET_OF(type) \ - struct { \ - type **array; \ - int count; /* Meaningful size */ \ - int size; /* Allocated size */ \ - void (*free)(type *); \ - } -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define ASN_SET_ADD(headptr, ptr) \ - asn_set_add((headptr), (ptr)) - -/******************************************* - * Implementation of the SET OF structure. - */ - -/* - * Add another structure into the set by its pointer. - * RETURN VALUES: - * 0 for success and -1/errno for failure. - */ -int asn_set_add(void *asn_set_of_x, void *ptr); - -/* - * Delete the element from the set by its number (base 0). - * This is a constant-time operation. The order of elements before the - * deleted ones is guaranteed, the order of elements after the deleted - * one is NOT guaranteed. - * If _do_free is given AND the (*free) is initialized, the element - * will be freed using the custom (*free) function as well. - */ -void asn_set_del(void *asn_set_of_x, int number, int _do_free); - -/* - * Empty the contents of the set. Will free the elements, if (*free) is given. - * Will NOT free the set itself. - */ -void asn_set_empty(void *asn_set_of_x); - -/* - * Cope with different conversions requirements to/from void in C and C++. - * This is mostly useful for support library. - */ -typedef A_SET_OF(void) asn_anonymous_set_; -#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) -#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_SET_OF_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_application.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_application.c deleted file mode 100644 index 2bff460..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_application.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_app_consume_bytes_f *callback, - void *callback_key); - - -struct callback_count_bytes_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - size_t computed_size; -}; - -/* - * Encoder which just counts bytes that come through it. - */ -static int -callback_count_bytes_cb(const void *data, size_t size, void *keyp) { - struct callback_count_bytes_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret >= 0) { - key->computed_size += size; - } - - return ret; -} - -struct overrun_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct dynamic_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct callback_failure_catch_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - int callback_failed; -}; - -/* - * Encoder which doesn't stop counting bytes - * even if it reaches the end of the buffer. - */ -static int -overrun_encoder_cb(const void *data, size_t size, void *keyp) { - struct overrun_encoder_key *key = keyp; - - if(key->computed_size + size > key->buffer_size) { - /* - * Avoid accident on the next call: - * stop adding bytes to the buffer. - */ - key->buffer_size = 0; - } else { - memcpy((char *)key->buffer + key->computed_size, data, size); - } - key->computed_size += size; - - return 0; -} - -/* - * Encoder which dynamically allocates output, and continues - * to count even if allocation failed. - */ -static int -dynamic_encoder_cb(const void *data, size_t size, void *keyp) { - struct dynamic_encoder_key *key = keyp; - - if(key->buffer) { - if(key->computed_size + size >= key->buffer_size) { - void *p; - size_t new_size = key->buffer_size; - - do { - new_size *= 2; - } while(new_size <= key->computed_size + size); - - p = REALLOC(key->buffer, new_size); - if(p) { - key->buffer = p; - key->buffer_size = new_size; - } else { - FREEMEM(key->buffer); - key->buffer = 0; - key->buffer_size = 0; - key->computed_size += size; - return 0; - } - } - memcpy((char *)key->buffer + key->computed_size, data, size); - } - - key->computed_size += size; - - return 0; -} - -/* - * Encoder which help convert the application level encoder failure into EIO. - */ -static int -callback_failure_catch_cb(const void *data, size_t size, void *keyp) { - struct callback_failure_catch_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret < 0) { - key->callback_failed = 1; - } - - return ret; -} - -asn_enc_rval_t -asn_encode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { - struct callback_failure_catch_key cb_key; - asn_enc_rval_t er = {0,0,0}; - - if(!callback) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.callback_failed = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - callback_failure_catch_cb, &cb_key); - if(cb_key.callback_failed) { - assert(er.encoded == -1); - assert(errno == EBADF); - errno = EIO; - } - - return er; -} - -asn_enc_rval_t -asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - void *buffer, size_t buffer_size) { - struct overrun_encoder_key buf_key; - asn_enc_rval_t er = {0,0,0}; - - if(buffer_size > 0 && !buffer) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - buf_key.buffer = buffer; - buf_key.buffer_size = buffer_size; - buf_key.computed_size = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - overrun_encoder_cb, &buf_key); - - if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - er.encoded, buf_key.computed_size); - assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); - } - - return er; -} - -asn_encode_to_new_buffer_result_t -asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr) { - struct dynamic_encoder_key buf_key; - asn_encode_to_new_buffer_result_t res; - - buf_key.buffer_size = 16; - buf_key.buffer = MALLOC(buf_key.buffer_size); - buf_key.computed_size = 0; - - res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - dynamic_encoder_cb, &buf_key); - - if(res.result.encoded >= 0 - && (size_t)res.result.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - res.result.encoded, buf_key.computed_size); - assert(res.result.encoded < 0 - || (size_t)res.result.encoded == buf_key.computed_size); - } - - res.buffer = buf_key.buffer; - - /* 0-terminate just in case. */ - if(res.buffer) { - assert(buf_key.computed_size < buf_key.buffer_size); - ((char *)res.buffer)[buf_key.computed_size] = '\0'; - } - - return res; -} - -static asn_enc_rval_t -asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_consume_bytes_f *callback, void *callback_key) { - asn_enc_rval_t er = {0,0,0}; - enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; - - (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ - - if(!td || !sptr) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - switch(syntax) { - case ATS_NONSTANDARD_PLAINTEXT: - if(td->op->print_struct) { - struct callback_count_bytes_key cb_key; - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.computed_size = 0; - if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, - &cb_key) - < 0 - || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { - errno = EBADF; /* Structure has incorrect form. */ - er.encoded = -1; - er.failed_type = td; - er.structure_ptr = sptr; - } else { - er.encoded = cb_key.computed_size; - er.failed_type = 0; - er.structure_ptr = 0; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - case ATS_RANDOM: - errno = ENOENT; /* Randomization doesn't make sense on output. */ - ASN__ENCODE_FAILED; - - case ATS_BER: - /* BER is a superset of DER. */ - /* Fall through. */ - case ATS_DER: - if(td->op->der_encoder) { - er = der_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->der_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* DER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_CER: - errno = ENOENT; /* Transfer syntax is not defined for any type. */ - ASN__ENCODE_FAILED; - -#ifdef ASN_DISABLE_OER_SUPPORT - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_OER_SUPPORT */ - case ATS_BASIC_OER: - /* CANONICAL-OER is a superset of BASIC-OER. */ - /* Fall through. */ - case ATS_CANONICAL_OER: - if(td->op->oer_encoder) { - er = oer_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->oer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* OER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_OER_SUPPORT */ - -#ifdef ASN_DISABLE_PER_SUPPORT - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_PER_SUPPORT */ - case ATS_UNALIGNED_BASIC_PER: - /* CANONICAL-UPER is a superset of BASIC-UPER. */ - /* Fall through. */ - case ATS_UNALIGNED_CANONICAL_PER: - if(td->op->uper_encoder) { - er = uper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->uper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* UPER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_ALIGNED_BASIC_PER: - /* CANONICAL-APER is a superset of BASIC-APER. */ - /* Fall through. */ - case ATS_ALIGNED_CANONICAL_PER: - if(td->op->aper_encoder) { - er = aper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->aper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* APER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_PER_SUPPORT */ - - case ATS_BASIC_XER: - /* CANONICAL-XER is a superset of BASIC-XER. */ - xer_flags &= ~XER_F_CANONICAL; - xer_flags |= XER_F_BASIC; - /* Fall through. */ - case ATS_CANONICAL_XER: - if(td->op->xer_encoder) { - er = xer_encode(td, sptr, xer_flags, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->xer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* XER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - default: - errno = ENOENT; - ASN__ENCODE_FAILED; - } - - return er; -} - -asn_dec_rval_t -asn_decode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - void **sptr, const void *buffer, size_t size) { - if(!td || !td->op || !sptr || (size && !buffer)) { - ASN__DECODE_FAILED; - } - - switch(syntax) { - case ATS_CER: - case ATS_NONSTANDARD_PLAINTEXT: - default: - errno = ENOENT; - ASN__DECODE_FAILED; - - case ATS_RANDOM: - if(!td->op->random_fill) { - ASN__DECODE_FAILED; - } else { - if(asn_random_fill(td, sptr, 16000) == 0) { - asn_dec_rval_t ret = {RC_OK, 0}; - return ret; - } else { - ASN__DECODE_FAILED; - } - } - break; - - case ATS_DER: - case ATS_BER: - return ber_decode(opt_codec_ctx, td, sptr, buffer, size); - - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: -#ifdef ASN_DISABLE_OER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return oer_decode(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_BASIC_XER: - case ATS_CANONICAL_XER: - return xer_decode(opt_codec_ctx, td, sptr, buffer, size); - } -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_application.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_application.h deleted file mode 100644 index 034f646..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_application.h +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Application-level ASN.1 callbacks. - */ -#ifndef ASN_APPLICATION_H -#define ASN_APPLICATION_H - -#include "asn_system.h" /* for platform-dependent types */ -#include "asn_codecs.h" /* for ASN.1 codecs specifics */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A selection of ASN.1 Transfer Syntaxes to use with generalized - * encoders and decoders declared further in this .h file. - */ -enum asn_transfer_syntax { - /* Avoid appearance of a default transfer syntax. */ - ATS_INVALID = 0, - /* Plaintext output (not conforming to any standard), for debugging. */ - ATS_NONSTANDARD_PLAINTEXT, - /* Returns a randomly generated structure. */ - ATS_RANDOM, - /* - * X.690: - * BER: Basic Encoding Rules. - * DER: Distinguished Encoding Rules. - * CER: Canonical Encoding Rules. - * DER and CER are more strict variants of BER. - */ - ATS_BER, - ATS_DER, - ATS_CER, /* Only decoding is supported */ - /* - * X.696: - * OER: Octet Encoding Rules. - * CANONICAL-OER is a more strict variant of BASIC-OER. - */ - ATS_BASIC_OER, - ATS_CANONICAL_OER, - /* - * X.691: - * PER: Packed Encoding Rules. - * CANONICAL-PER is a more strict variant of BASIC-PER. - * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). - */ - ATS_UNALIGNED_BASIC_PER, - ATS_UNALIGNED_CANONICAL_PER, - ATS_ALIGNED_BASIC_PER, - ATS_ALIGNED_CANONICAL_PER, - /* - * X.693: - * XER: XML Encoding Rules. - * CANONICAL-XER is a more strict variant of BASIC-XER. - */ - ATS_BASIC_XER, - ATS_CANONICAL_XER -}; - -/* - * A generic encoder for any supported transfer syntax. - * RETURN VALUES: - * The (.encoded) field of the return value is REDEFINED to mean the following: - * >=0: The computed size of the encoded data. Can exceed the (buffer_size). - * -1: Error encoding the structure. See the error code in (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate - * values at the place of failure, if at all possible. - * WARNING: The (.encoded) field of the return value can exceed the buffer_size. - * This is similar to snprintf(3) contract which might return values - * greater than the buffer size. - */ -asn_enc_rval_t asn_encode_to_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, void *buffer, size_t buffer_size); - -/* - * A variant of asn_encode_to_buffer() with automatically allocated buffer. - * RETURN VALUES: - * On success, returns a newly allocated (.buffer) containing the whole message. - * The message size is returned in (.result.encoded). - * On failure: - * (.buffer) is NULL, - * (.result.encoded) as in asn_encode_to_buffer(), - * The errno codes as in asn_encode_to_buffer(), plus the following: - * ENOMEM: Memory allocation failed due to system or internal limits. - * The user is responsible for freeing the (.buffer). - */ -typedef struct asn_encode_to_new_buffer_result_s { - void *buffer; /* NULL if failed to encode. */ - asn_enc_rval_t result; -} asn_encode_to_new_buffer_result_t; -asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode); - - -/* - * Generic type of an application-defined callback to return various - * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. - */ -typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, - void *application_specific_key); - - -/* - * A generic encoder for any supported transfer syntax. - * Returns the comprehensive encoding result descriptor (see asn_codecs.h). - * RETURN VALUES: - * The negative (.encoded) field of the return values is accompanied with the - * following error codes (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * EIO: The (callback) has returned negative value during encoding. - */ -asn_enc_rval_t asn_encode( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, - asn_app_consume_bytes_f *callback, void *callback_key); - - -/* - * A generic decoder for any supported transfer syntax. - */ -asn_dec_rval_t asn_decode( - const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_decode, - void **structure_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - - -/* - * A callback of this type is called whenever constraint validation fails - * on some ASN.1 type. See "constraints.h" for more details on constraint - * validation. - * This callback specifies a descriptor of the ASN.1 type which failed - * the constraint check, as well as human readable message on what - * particular constraint has failed. - */ -typedef void (asn_app_constraint_failed_f)(void *application_specific_key, - const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, - const void *structure_which_failed_ptr, - const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); - - -#ifdef __cplusplus -} -#endif - -#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ - -#endif /* ASN_APPLICATION_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_bit_data.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_bit_data.c deleted file mode 100644 index fe4b89b..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_bit_data.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Create a contiguous non-refillable bit data structure. - * Can be freed by FREEMEM(). - */ -asn_bit_data_t * -asn_bit_data_new_contiguous(const void *data, size_t size_bits) { - size_t size_bytes = (size_bits + 7) / 8; - asn_bit_data_t *pd; - uint8_t *bytes; - - /* Get the extensions map */ - pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); - if(!pd) { - return NULL; - } - bytes = (void *)(((char *)pd) + sizeof(*pd)); - memcpy(bytes, data, size_bytes); - bytes[size_bytes] = 0; - pd->buffer = bytes; - pd->nboff = 0; - pd->nbits = size_bits; - - return pd; -} - - -char * -asn_bit_data_string(asn_bit_data_t *pd) { - static char buf[2][32]; - static int n; - n = (n+1) % 2; - snprintf(buf[n], sizeof(buf[n]), - "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE - "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", - pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, - pd->nbits - pd->nboff); - return buf[n]; -} - -void -asn_get_undo(asn_bit_data_t *pd, int nbits) { - if((ssize_t)pd->nboff < nbits) { - assert((ssize_t)pd->nboff < nbits); - } else { - pd->nboff -= nbits; - pd->moved -= nbits; - } -} - -/* - * Extract a small number of bits (<= 31) from the specified PER data pointer. - */ -int32_t -asn_get_few_bits(asn_bit_data_t *pd, int nbits) { - size_t off; /* Next after last bit offset */ - ssize_t nleft; /* Number of bits left in this stream */ - uint32_t accum; - const uint8_t *buf; - - if(nbits < 0) - return -1; - - nleft = pd->nbits - pd->nboff; - if(nbits > nleft) { - int32_t tailv, vhead; - if(!pd->refill || nbits > 31) return -1; - /* Accumulate unused bytes before refill */ - ASN_DEBUG("Obtain the rest %d bits (want %d)", - (int)nleft, (int)nbits); - tailv = asn_get_few_bits(pd, nleft); - if(tailv < 0) return -1; - /* Refill (replace pd contents with new data) */ - if(pd->refill(pd)) - return -1; - nbits -= nleft; - vhead = asn_get_few_bits(pd, nbits); - /* Combine the rest of previous pd with the head of new one */ - tailv = (tailv << nbits) | vhead; /* Could == -1 */ - return tailv; - } - - /* - * Normalize position indicator. - */ - if(pd->nboff >= 8) { - pd->buffer += (pd->nboff >> 3); - pd->nbits -= (pd->nboff & ~0x07); - pd->nboff &= 0x07; - } - pd->moved += nbits; - pd->nboff += nbits; - off = pd->nboff; - buf = pd->buffer; - - /* - * Extract specified number of bits. - */ - if(off <= 8) - accum = nbits ? (buf[0]) >> (8 - off) : 0; - else if(off <= 16) - accum = ((buf[0] << 8) + buf[1]) >> (16 - off); - else if(off <= 24) - accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); - else if(off <= 31) - accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) - + (buf[2] << 8) + (buf[3])) >> (32 - off); - else if(nbits <= 31) { - asn_bit_data_t tpd = *pd; - /* Here are we with our 31-bits limit plus 1..7 bits offset. */ - asn_get_undo(&tpd, nbits); - /* The number of available bits in the stream allow - * for the following operations to take place without - * invoking the ->refill() function */ - accum = asn_get_few_bits(&tpd, nbits - 24) << 24; - accum |= asn_get_few_bits(&tpd, 24); - } else { - asn_get_undo(pd, nbits); - return -1; - } - - accum &= (((uint32_t)1 << nbits) - 1); - - ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", - (int)nbits, (int)nleft, - (int)pd->moved, - (((long)pd->buffer) & 0xf), - (int)pd->nboff, (int)pd->nbits, - ((pd->buffer != NULL)?pd->buffer[0]:0), - (int)(pd->nbits - pd->nboff), - (int)accum); - - return accum; -} - -/* - * Extract a large number of bits from the specified PER data pointer. - */ -int -asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { - int32_t value; - - if(alright && (nbits & 7)) { - /* Perform right alignment of a first few bits */ - value = asn_get_few_bits(pd, nbits & 0x07); - if(value < 0) return -1; - *dst++ = value; /* value is already right-aligned */ - nbits &= ~7; - } - - while(nbits) { - if(nbits >= 24) { - value = asn_get_few_bits(pd, 24); - if(value < 0) return -1; - *(dst++) = value >> 16; - *(dst++) = value >> 8; - *(dst++) = value; - nbits -= 24; - } else { - value = asn_get_few_bits(pd, nbits); - if(value < 0) return -1; - if(nbits & 7) { /* implies left alignment */ - value <<= 8 - (nbits & 7), - nbits += 8 - (nbits & 7); - if(nbits > 24) - *dst++ = value >> 24; - } - if(nbits > 16) - *dst++ = value >> 16; - if(nbits > 8) - *dst++ = value >> 8; - *dst++ = value; - break; - } - } - - return 0; -} - -/* - * Put a small number of bits (<= 31). - */ -int -asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { - size_t off; /* Next after last bit offset */ - size_t omsk; /* Existing last byte meaningful bits mask */ - uint8_t *buf; - - if(obits <= 0 || obits >= 32) return obits ? -1 : 0; - - ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", - obits, (int)bits, (void *)po->buffer, (int)po->nboff); - - /* - * Normalize position indicator. - */ - if(po->nboff >= 8) { - po->buffer += (po->nboff >> 3); - po->nbits -= (po->nboff & ~0x07); - po->nboff &= 0x07; - } - - /* - * Flush whole-bytes output, if necessary. - */ - if(po->nboff + obits > po->nbits) { - size_t complete_bytes; - if(!po->buffer) po->buffer = po->tmpspace; - complete_bytes = (po->buffer - po->tmpspace); - ASN_DEBUG("[PER output %ld complete + %ld]", - (long)complete_bytes, (long)po->flushed_bytes); - if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) - return -1; - if(po->nboff) - po->tmpspace[0] = po->buffer[0]; - po->buffer = po->tmpspace; - po->nbits = 8 * sizeof(po->tmpspace); - po->flushed_bytes += complete_bytes; - } - - /* - * Now, due to sizeof(tmpspace), we are guaranteed large enough space. - */ - buf = po->buffer; - omsk = ~((1 << (8 - po->nboff)) - 1); - off = (po->nboff + obits); - - /* Clear data of debris before meaningful bits */ - bits &= (((uint32_t)1 << obits) - 1); - - ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, - (int)bits, (int)bits, - (int)po->nboff, (int)off, - buf[0], (int)(omsk&0xff), - (int)(buf[0] & omsk)); - - if(off <= 8) /* Completely within 1 byte */ - po->nboff = off, - bits <<= (8 - off), - buf[0] = (buf[0] & omsk) | bits; - else if(off <= 16) - po->nboff = off, - bits <<= (16 - off), - buf[0] = (buf[0] & omsk) | (bits >> 8), - buf[1] = bits; - else if(off <= 24) - po->nboff = off, - bits <<= (24 - off), - buf[0] = (buf[0] & omsk) | (bits >> 16), - buf[1] = bits >> 8, - buf[2] = bits; - else if(off <= 31) - po->nboff = off, - bits <<= (32 - off), - buf[0] = (buf[0] & omsk) | (bits >> 24), - buf[1] = bits >> 16, - buf[2] = bits >> 8, - buf[3] = bits; - else { - if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; - if(asn_put_few_bits(po, bits, obits - 24)) return -1; - } - - ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", - (int)bits, (int)bits, buf[0], - (long)(po->buffer - po->tmpspace)); - - return 0; -} - - -/* - * Output a large number of bits. - */ -int -asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { - - while(nbits) { - uint32_t value; - - if(nbits >= 24) { - value = (src[0] << 16) | (src[1] << 8) | src[2]; - src += 3; - nbits -= 24; - if(asn_put_few_bits(po, value, 24)) - return -1; - } else { - value = src[0]; - if(nbits > 8) - value = (value << 8) | src[1]; - if(nbits > 16) - value = (value << 8) | src[2]; - if(nbits & 0x07) - value >>= (8 - (nbits & 0x07)); - if(asn_put_few_bits(po, value, nbits)) - return -1; - break; - } - } - - return 0; -} - - -int -asn_put_aligned_flush(asn_bit_outp_t *po) { - uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); - size_t complete_bytes = - (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); - - if(unused_bits) { - po->buffer[po->nboff >> 3] &= ~0u << unused_bits; - } - - if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { - return -1; - } else { - po->buffer = po->tmpspace; - po->nboff = 0; - po->nbits = 8 * sizeof(po->tmpspace); - po->flushed_bytes += complete_bytes; - return 0; - } -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_bit_data.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_bit_data.h deleted file mode 100644 index 59de7af..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_bit_data.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_BIT_DATA -#define ASN_BIT_DATA - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This structure describes a position inside an incoming PER bit stream. - */ -typedef struct asn_bit_data_s { - const uint8_t *buffer; /* Pointer to the octet stream */ - size_t nboff; /* Bit offset to the meaningful bit */ - size_t nbits; /* Number of bits in the stream */ - size_t moved; /* Number of bits moved through this bit stream */ - int (*refill)(struct asn_bit_data_s *); - void *refill_key; -} asn_bit_data_t; - -/* - * Create a contiguous non-refillable bit data structure. - * Can be freed by FREEMEM(). - */ -asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); - -/* - * Extract a small number of bits (<= 31) from the specified PER data pointer. - * This function returns -1 if the specified number of bits could not be - * extracted due to EOD or other conditions. - */ -int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); - -/* Undo the immediately preceeding "get_few_bits" operation */ -void asn_get_undo(asn_bit_data_t *, int get_nbits); - -/* - * Extract a large number of bits from the specified PER data pointer. - * This function returns -1 if the specified number of bits could not be - * extracted due to EOD or other conditions. - */ -int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, - int get_nbits); - -/* Non-thread-safe debugging function, don't use it */ -char *asn_bit_data_string(asn_bit_data_t *); - -/* - * This structure supports forming bit output. - */ -typedef struct asn_bit_outp_s { - uint8_t *buffer; /* Pointer into the (tmpspace) */ - size_t nboff; /* Bit offset to the meaningful bit */ - size_t nbits; /* Number of bits left in (tmpspace) */ - uint8_t tmpspace[32]; /* Preliminary storage to hold data */ - int (*output)(const void *data, size_t size, void *op_key); - void *op_key; /* Key for (output) data callback */ - size_t flushed_bytes; /* Bytes already flushed through (output) */ -} asn_bit_outp_t; - -/* Output a small number of bits (<= 31) */ -int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); - -/* Output a large number of bits */ -int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); - -/* - * Flush whole bytes (0 or more) through (outper) member. - * The least significant bits which are not used are guaranteed to be set to 0. - * Returns -1 if callback returns -1. Otherwise, 0. - */ -int asn_put_aligned_flush(asn_bit_outp_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_BIT_DATA */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs.h deleted file mode 100644 index e75c270..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_CODECS_H -#define ASN_CODECS_H - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * This structure defines a set of parameters that may be passed - * to every ASN.1 encoder or decoder function. - * WARNING: if max_stack_size member is set, and you are calling the - * function pointers of the asn_TYPE_descriptor_t directly, - * this structure must be ALLOCATED ON THE STACK! - * If you can't always satisfy this requirement, use ber_decode(), - * xer_decode() and uper_decode() functions instead. - */ -typedef struct asn_codec_ctx_s { - /* - * Limit the decoder routines to use no (much) more stack than a given - * number of bytes. Most of decoders are stack-based, and this - * would protect against stack overflows if the number of nested - * encodings is high. - * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, - * and are safe from this kind of overflow. - * A value from getrlimit(RLIMIT_STACK) may be used to initialize - * this variable. Be careful in multithreaded environments, as the - * stack size is rather limited. - */ - size_t max_stack_size; /* 0 disables stack bounds checking */ -} asn_codec_ctx_t; - -/* - * Type of the return value of the encoding functions (der_encode, xer_encode). - */ -typedef struct asn_enc_rval_s { - /* - * Number of bytes encoded. - * -1 indicates failure to encode the structure. - * In this case, the members below this one are meaningful. - */ - ssize_t encoded; - - /* - * Members meaningful when (encoded == -1), for post mortem analysis. - */ - - /* Type which cannot be encoded */ - const struct asn_TYPE_descriptor_s *failed_type; - - /* Pointer to the structure of that type */ - const void *structure_ptr; -} asn_enc_rval_t; -#define ASN__ENCODE_FAILED do { \ - asn_enc_rval_t tmp_error; \ - tmp_error.encoded = -1; \ - tmp_error.failed_type = td; \ - tmp_error.structure_ptr = sptr; \ - ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ - return tmp_error; \ -} while(0) -#define ASN__ENCODED_OK(rval) do { \ - rval.structure_ptr = 0; \ - rval.failed_type = 0; \ - return rval; \ -} while(0) - -/* - * Type of the return value of the decoding functions (ber_decode, xer_decode) - * - * Please note that the number of consumed bytes is ALWAYS meaningful, - * even if code==RC_FAIL. This is to indicate the number of successfully - * decoded bytes, hence providing a possibility to fail with more diagnostics - * (i.e., print the offending remainder of the buffer). - */ -enum asn_dec_rval_code_e { - RC_OK, /* Decoded successfully */ - RC_WMORE, /* More data expected, call again */ - RC_FAIL /* Failure to decode data */ -}; -typedef struct asn_dec_rval_s { - enum asn_dec_rval_code_e code; /* Result code */ - size_t consumed; /* Number of bytes consumed */ -} asn_dec_rval_t; -#define ASN__DECODE_FAILED do { \ - asn_dec_rval_t tmp_error; \ - tmp_error.code = RC_FAIL; \ - tmp_error.consumed = 0; \ - ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ - return tmp_error; \ -} while(0) -#define ASN__DECODE_STARVED do { \ - asn_dec_rval_t tmp_error; \ - tmp_error.code = RC_WMORE; \ - tmp_error.consumed = 0; \ - return tmp_error; \ -} while(0) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_CODECS_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs_prim.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs_prim.c deleted file mode 100644 index fc24247..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs_prim.c +++ /dev/null @@ -1,317 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Decode an always-primitive type. - */ -asn_dec_rval_t -ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval; - ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ - - /* - * If the structure is not there, allocate it. - */ - if(st == NULL) { - st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) ASN__DECODE_FAILED; - *sptr = (void *)st; - } - - ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", - td->name, tag_mode); - - /* - * Check tags and extract value length. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - st->size = (int)length; - /* The following better be optimized away. */ - if(sizeof(st->size) != sizeof(length) - && (ber_tlv_len_t)st->size != length) { - st->size = 0; - ASN__DECODE_FAILED; - } - - st->buf = (uint8_t *)MALLOC(length + 1); - if(!st->buf) { - st->size = 0; - ASN__DECODE_FAILED; - } - - memcpy(st->buf, buf_ptr, length); - st->buf[length] = '\0'; /* Just in case */ - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s", - (long)rval.consumed, - (long)length, td->name); - - return rval; -} - -/* - * Encode an always-primitive type using DER. - */ -asn_enc_rval_t -der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - - ASN_DEBUG("%s %s as a primitive type (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, - cb, app_key); - ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb && st->buf) { - if(cb(st->buf, st->size, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } else { - assert(st->buf || st->size == 0); - } - - erval.encoded += st->size; - ASN__ENCODED_OK(erval); -} - -void -ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as a primitive type", td->name); - - if(st->buf) - FREEMEM(st->buf); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); - break; - } -} - - -/* - * Local internal type passed around as an argument. - */ -struct xdp_arg_s { - const asn_TYPE_descriptor_t *type_descriptor; - void *struct_key; - xer_primitive_body_decoder_f *prim_body_decoder; - int decoded_something; - int want_more; -}; - -/* - * Since some kinds of primitive values can be encoded using value-specific - * tags (, , etc), the primitive decoder must - * be supplied with such tags to parse them as needed. - */ -static int -xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - /* - * The chunk_buf is guaranteed to start at '<'. - */ - assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); - - /* - * Decoding was performed once already. Prohibit doing it again. - */ - if(arg->decoded_something) - return -1; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return 0; - } - - return -1; -} - -static ssize_t -xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - size_t lead_wsp_size; - - if(arg->decoded_something) { - if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { - /* - * Example: - * "123 " - * ^- chunk_buf position. - */ - return chunk_size; - } - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - if(!have_more) { - /* - * If we've received something like "1", we can't really - * tell whether it is really `1` or `123`, until we know - * that there is no more data coming. - * The have_more argument will be set to 1 once something - * like this is available to the caller of this callback: - * "1want_more = 1; - return -1; - } - - lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); - chunk_buf = (const char *)chunk_buf + lead_wsp_size; - chunk_size -= lead_wsp_size; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return lead_wsp_size + chunk_size; - } - - return -1; -} - - -asn_dec_rval_t -xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - size_t struct_size, const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder) { - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t s_ctx; - struct xdp_arg_s s_arg; - asn_dec_rval_t rc; - - /* - * Create the structure if does not exist. - */ - if(!*sptr) { - *sptr = CALLOC(1, struct_size); - if(!*sptr) ASN__DECODE_FAILED; - } - - memset(&s_ctx, 0, sizeof(s_ctx)); - s_arg.type_descriptor = td; - s_arg.struct_key = *sptr; - s_arg.prim_body_decoder = prim_body_decoder; - s_arg.decoded_something = 0; - s_arg.want_more = 0; - - rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, - xml_tag, buf_ptr, size, - xer_decode__unexpected_tag, xer_decode__primitive_body); - switch(rc.code) { - case RC_OK: - if(!s_arg.decoded_something) { - char ch; - ASN_DEBUG("Primitive body is not recognized, " - "supplying empty one"); - /* - * Decoding opportunity has come and gone. - * Where's the result? - * Try to feed with empty body, see if it eats it. - */ - if(prim_body_decoder(s_arg.type_descriptor, - s_arg.struct_key, &ch, 0) - != XPBD_BODY_CONSUMED) { - /* - * This decoder does not like empty stuff. - */ - ASN__DECODE_FAILED; - } - } - break; - case RC_WMORE: - /* - * Redo the whole thing later. - * We don't have a context to save intermediate parsing state. - */ - rc.consumed = 0; - break; - case RC_FAIL: - rc.consumed = 0; - if(s_arg.want_more) - rc.code = RC_WMORE; - else - ASN__DECODE_FAILED; - break; - } - return rc; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs_prim.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs_prim.h deleted file mode 100644 index fbc5576..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_codecs_prim.h +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_CODECS_PRIM_H -#define ASN_CODECS_PRIM_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct ASN__PRIMITIVE_TYPE_s { - uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ - size_t size; /* Size of the buffer */ -} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ - -asn_struct_free_f ASN__PRIMITIVE_TYPE_free; -ber_type_decoder_f ber_decode_primitive; -der_type_encoder_f der_encode_primitive; - -/* - * A callback specification for the xer_decode_primitive() function below. - */ -enum xer_pbd_rval { - XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ - XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ - XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ - XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ - XPBD_BODY_CONSUMED /* Body is recognized and consumed */ -}; -typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( - const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, - size_t chunk_size); - -/* - * Specific function to decode simple primitive types. - * Also see xer_decode_general() in xer_decoder.h - */ -asn_dec_rval_t xer_decode_primitive( - const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, - size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_CODECS_PRIM_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_internal.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_internal.c deleted file mode 100644 index 1aff95f..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_internal.c +++ /dev/null @@ -1,48 +0,0 @@ -#include - -ssize_t -asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, - const char *fmt, ...) { - char scratch[64]; - char *buf = scratch; - size_t buf_size = sizeof(scratch); - int wrote; - int cb_ret; - - do { - va_list args; - va_start(args, fmt); - - wrote = vsnprintf(buf, buf_size, fmt, args); - if(wrote < (ssize_t)buf_size) { - if(wrote < 0) { - if(buf != scratch) FREEMEM(buf); - va_end(args); - return -1; - } - break; - } - - buf_size <<= 1; - if(buf == scratch) { - buf = MALLOC(buf_size); - if(!buf) return -1; - } else { - void *p = REALLOC(buf, buf_size); - if(!p) { - FREEMEM(buf); - return -1; - } - buf = p; - } - } while(1); - - cb_ret = cb(buf, wrote, key); - if(buf != scratch) FREEMEM(buf); - if(cb_ret < 0) { - return -1; - } - - return wrote; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_internal.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_internal.h deleted file mode 100644 index c4105ad..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_internal.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Declarations internally useful for the ASN.1 support code. - */ -#ifndef ASN_INTERNAL_H -#define ASN_INTERNAL_H -#define __EXTENSIONS__ /* for Sun */ - -#include "asn_application.h" /* Application-visible API */ - -#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ -#include /* for assert() macro */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Environment version might be used to avoid running with the old library */ -#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ -int get_asn1c_environment_version(void); /* Run-time version */ - -#define CALLOC(nmemb, size) calloc(nmemb, size) -#define MALLOC(size) malloc(size) -#define REALLOC(oldptr, size) realloc(oldptr, size) -#define FREEMEM(ptr) free(ptr) - -#define asn_debug_indent 0 -#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) - -#ifdef EMIT_ASN_DEBUG -#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" -#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG -#endif - -/* - * A macro for debugging the ASN.1 internals. - * You may enable or override it. - */ -#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ -#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ -#if !defined(BELL_LABS) /* Bell Labs */ - //#if __STDC_VERSION__ >= 199901L -#ifdef ASN_THREAD_SAFE -/* Thread safety requires sacrifice in output indentation: - * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ -#else /* !ASN_THREAD_SAFE */ -#undef ASN_DEBUG_INDENT_ADD -#undef asn_debug_indent -int asn_debug_indent; -#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) -#endif /* ASN_THREAD_SAFE */ -#if defined(BELL_LABS) /* Bell Labs version */ -extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); -#define ASN_DEBUG(fmt, args...) do { \ - (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ - } while(0) -#else -#define ASN_DEBUG(fmt, args...) do { \ - int adi = asn_debug_indent; \ - while(adi--) fprintf(stderr, " "); \ - fprintf(stderr, fmt, ##args); \ - fprintf(stderr, " (%s:%d)\n", \ - __FILE__, __LINE__); \ - } while(0) -#endif /* BELL_LABS */ -#else /* !C99 */ -void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); -#define ASN_DEBUG ASN_DEBUG_f -#endif /* C99 */ -#else /* ASN_EMIT_DEBUG != 1 */ -#if __STDC_VERSION__ >= 199901L -#define ASN_DEBUG(...) do{}while(0) -#else /* not C99 */ -static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } -#endif /* C99 or better */ -#endif /* ASN_EMIT_DEBUG */ -#endif /* ASN_DEBUG */ - -/* - * Print to a callback. - * The callback is expected to return negative values on error. - * 0 and positive values are treated as success. - * RETURN VALUES: - * -1: Failed to format or invoke the callback. - * >0: Size of the data that got delivered to the callback. - */ -ssize_t CC_PRINTFLIKE(3, 4) -asn__format_to_callback( - int (*callback)(const void *, size_t, void *key), void *key, - const char *fmt, ...); - -/* - * Invoke the application-supplied callback and fail, if something is wrong. - */ -#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) -#define ASN__E_CALLBACK(size, foo) \ - do { \ - if(foo) goto cb_failed; \ - er.encoded += (size); \ - } while(0) -#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) -#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ - ASN__E_CALLBACK((size1) + (size2), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) -#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ - ASN__E_CALLBACK((size1) + (size2) + (size3), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ - || ASN__E_cbc(buf3, size3)) - -#define ASN__TEXT_INDENT(nl, level) \ - do { \ - int tmp_level = (level); \ - int tmp_nl = ((nl) != 0); \ - int tmp_i; \ - if(tmp_nl) ASN__CALLBACK("\n", 1); \ - if(tmp_level < 0) tmp_level = 0; \ - for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ - } while(0) - -#define _i_INDENT(nl) do { \ - int tmp_i; \ - if((nl) && cb("\n", 1, app_key) < 0) \ - return -1; \ - for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ - if(cb(" ", 4, app_key) < 0) \ - return -1; \ - } while(0) - -/* - * Check stack against overflow, if limit is set. - */ -#define ASN__DEFAULT_STACK_MAX (30000) -static int CC_NOTUSED -ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { - if(ctx && ctx->max_stack_size) { - - /* ctx MUST be allocated on the stack */ - ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); - if(usedstack > 0) usedstack = -usedstack; /* grows up! */ - - /* double negative required to avoid int wrap-around */ - if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { - ASN_DEBUG("Stack limit %ld reached", - (long)ctx->max_stack_size); - return -1; - } - } - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_INTERNAL_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_ioc.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_ioc.h deleted file mode 100644 index 7de210e..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_ioc.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Run-time support for Information Object Classes. - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_IOC_H -#define ASN_IOC_H - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; -struct asn_ioc_cell_s; - -/* - * X.681, #13 - */ -typedef struct asn_ioc_set_s { - size_t rows_count; - size_t columns_count; - const struct asn_ioc_cell_s *rows; -} asn_ioc_set_t; - - -typedef struct asn_ioc_cell_s { - const char *field_name; /* Is equal to corresponding column_name */ - enum { - aioc__undefined = 0, - aioc__value, - aioc__type, - aioc__open_type, - } cell_kind; - struct asn_TYPE_descriptor_s *type_descriptor; - const void *value_sptr; - struct { - size_t types_count; - struct { - unsigned choice_position; - } *types; - } open_type; -} asn_ioc_cell_t; - - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_IOC_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_random_fill.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_random_fill.c deleted file mode 100644 index 819cf70..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_random_fill.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -int -asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, - size_t length) { - - if(td && td->op->random_fill) { - asn_random_fill_result_t res = - td->op->random_fill(td, struct_ptr, 0, length); - return (res.code == ARFILL_OK) ? 0 : -1; - } else { - return -1; - } -} - -static uintmax_t -asn__intmax_range(intmax_t lb, intmax_t ub) { - assert(lb <= ub); - if((ub < 0) == (lb < 0)) { - return ub - lb; - } else if(lb < 0) { - return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); - } else { - assert(!"Unreachable"); - return 0; - } -} - -intmax_t -asn_random_between(intmax_t lb, intmax_t rb) { - if(lb == rb) { - return lb; - } else { - const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); - uintmax_t range = asn__intmax_range(lb, rb); - uintmax_t value = 0; - uintmax_t got_entropy = 0; - - assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ - assert(range < intmax_max); - - for(; got_entropy < range;) { - got_entropy = (got_entropy << 24) | 0xffffff; - value = (value << 24) | (random() % 0xffffff); - } - - return lb + (intmax_t)(value % (range + 1)); - } -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_random_fill.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_random_fill.h deleted file mode 100644 index 47f9b8a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_random_fill.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_RANDOM_FILL -#define ASN_RANDOM_FILL - -/* Forward declarations */ -struct asn_TYPE_descriptor_s; -struct asn_encoding_constraints_s; - -/* - * Initialize a structure with random data according to the type specification - * and optional member constraints. - * ARGUMENTS: - * (max_length) - See (approx_max_length_limit). - * (memb_constraints) - Member constraints, if exist. - * The type can be constrained differently according - * to PER and OER specifications, so we find a value - * at the intersection of these constraints. - * In case the return differs from ARFILL_OK, the (struct_ptr) contents - * and (current_length) value remain in their original state. - */ -typedef struct asn_random_fill_result_s { - enum { - ARFILL_FAILED = -1, /* System error (memory?) */ - ARFILL_OK = 0, /* Initialization succeeded */ - ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ - } code; - size_t length; /* Approximate number of bytes created. */ -} asn_random_fill_result_t; -typedef asn_random_fill_result_t(asn_random_fill_f)( - const struct asn_TYPE_descriptor_s *td, void **struct_ptr, - const struct asn_encoding_constraints_s *memb_constraints, - size_t max_length); - -/* - * Returns 0 if the structure was properly initialized, -1 otherwise. - * The (approx_max_length_limit) specifies the approximate limit of the - * resulting structure in units closely resembling bytes. The actual result - * might be several times larger or smaller than the length limit. - */ -int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, - size_t approx_max_length_limit); - -/* - * Returns a random number between min and max. - */ -intmax_t asn_random_between(intmax_t min, intmax_t max); - -#endif /* ASN_RANDOM_FILL */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_system.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_system.h deleted file mode 100644 index fa8cf11..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/asn_system.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Miscellaneous system-dependent types. - */ -#ifndef ASN_SYSTEM_H -#define ASN_SYSTEM_H - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE 1 -#endif - -#ifndef _BSD_SOURCE -#define _BSD_SOURCE /* for snprintf() on some linux systems */ -#endif - -#include /* For snprintf(3) */ -#include /* For *alloc(3) */ -#include /* For memcpy(3) */ -#include /* For size_t */ -#include /* For LONG_MAX */ -#include /* For va_start */ -#include /* for offsetof and ptrdiff_t */ - -#ifdef _WIN32 - -#include -#define snprintf _snprintf -#define vsnprintf _vsnprintf - -/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ -#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ - | (((l) << 8) & 0xff0000) \ - | (((l) >> 8) & 0xff00) \ - | ((l >> 24) & 0xff)) - -#ifdef _MSC_VER /* MSVS.Net */ -#ifndef __cplusplus -#define inline __inline -#endif -#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ -#define ssize_t SSIZE_T -#if _MSC_VER < 1600 -typedef char int8_t; -typedef short int16_t; -typedef int int32_t; -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -#else /* _MSC_VER >= 1600 */ -#include -#endif /* _MSC_VER < 1600 */ -#endif /* ASSUMESTDTYPES */ -#define WIN32_LEAN_AND_MEAN -#include -#include -#define isnan _isnan -#define finite _finite -#define copysign _copysign -#define ilogb _logb -#else /* !_MSC_VER */ -#include -#endif /* _MSC_VER */ - -#else /* !_WIN32 */ - -#if defined(__vxworks) -#include -#else /* !defined(__vxworks) */ - -#include /* C99 specifies this file */ -#include /* for ntohl() */ -#define sys_ntohl(foo) ntohl(foo) -#endif /* defined(__vxworks) */ - -#endif /* _WIN32 */ - -#if __GNUC__ >= 3 || defined(__clang__) -#define CC_ATTRIBUTE(attr) __attribute__((attr)) -#else -#define CC_ATTRIBUTE(attr) -#endif -#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) -#define CC_NOTUSED CC_ATTRIBUTE(unused) -#ifndef CC_ATTR_NO_SANITIZE -#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) -#endif - -/* Figure out if thread safety is requested */ -#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) -#define ASN_THREAD_SAFE -#endif /* Thread safety */ - -#ifndef offsetof /* If not defined by */ -#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) -#endif /* offsetof */ - -#ifndef MIN /* Suitable for comparing primitive types (integers) */ -#if defined(__GNUC__) -#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ - ((_a)<(_b)?(_a):(_b)); }) -#else /* !__GNUC__ */ -#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ -#endif /* __GNUC__ */ -#endif /* MIN */ - -#if __STDC_VERSION__ >= 199901L -#ifndef SIZE_MAX -#define SIZE_MAX ((~((size_t)0)) >> 1) -#endif - -#ifndef RSIZE_MAX /* C11, Annex K */ -#define RSIZE_MAX (SIZE_MAX >> 1) -#endif -#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ -#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) -#endif -#else /* Old compiler */ -#undef SIZE_MAX -#undef RSIZE_MAX -#undef RSSIZE_MAX -#define SIZE_MAX ((~((size_t)0)) >> 1) -#define RSIZE_MAX (SIZE_MAX >> 1) -#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) -#endif - -#if __STDC_VERSION__ >= 199901L -#define ASN_PRI_SIZE "zu" -#define ASN_PRI_SSIZE "zd" -#define ASN_PRIuMAX PRIuMAX -#define ASN_PRIdMAX PRIdMAX -#else -#define ASN_PRI_SIZE "lu" -#define ASN_PRI_SSIZE "ld" -#if LLONG_MAX > LONG_MAX -#define ASN_PRIuMAX "llu" -#define ASN_PRIdMAX "lld" -#else -#define ASN_PRIuMAX "lu" -#define ASN_PRIdMAX "ld" -#endif -#endif - -#endif /* ASN_SYSTEM_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_decoder.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_decoder.c deleted file mode 100644 index 75d6016..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_decoder.c +++ /dev/null @@ -1,283 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - if(opt_ctx) opt_ctx->step = step; /* Save context */ \ - if(_code == RC_OK || opt_ctx) \ - rval.consumed = consumed_myself; \ - else \ - rval.consumed = 0; /* Context-free */ \ - return rval; \ - } while(0) - -/* - * The BER decoder of any type. - */ -asn_dec_rval_t -ber_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, - const void *ptr, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - ptr, size, /* Buffer and its size */ - 0 /* Default tag mode is 0 */ - ); -} - -/* - * Check the set of >> tags matches the definition. - */ -asn_dec_rval_t -ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, - const void *ptr, size_t size, int tag_mode, int last_tag_form, - ber_tlv_len_t *last_length, int *opt_tlv_form) { - ssize_t consumed_myself = 0; - ssize_t tag_len; - ssize_t len_len; - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_len_t limit_len = -1; - int expect_00_terminators = 0; - int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ - int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ - int tagno; - - /* - * Make sure we didn't exceed the maximum stack size. - */ - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - RETURN(RC_FAIL); - - /* - * So what does all this implicit skip stuff mean? - * Imagine two types, - * A ::= [5] IMPLICIT T - * B ::= [2] EXPLICIT T - * Where T is defined as - * T ::= [4] IMPLICIT SEQUENCE { ... } - * - * Let's say, we are starting to decode type A, given the - * following TLV stream: <5> <0>. What does this mean? - * It means that the type A contains type T which is, - * in turn, empty. - * Remember though, that we are still in A. We cannot - * just pass control to the type T decoder. Why? Because - * the type T decoder expects <4> <0>, not <5> <0>. - * So, we must make sure we are going to receive <5> while - * still in A, then pass control to the T decoder, indicating - * that the tag <4> was implicitly skipped. The decoder of T - * hence will be prepared to treat <4> as valid tag, and decode - * it appropriately. - */ - - tagno = step /* Continuing where left previously */ - + (tag_mode==1?-1:0) - ; - ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", - td->name, (long)size, tag_mode, step, tagno); - /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ - - if(tag_mode == 0 && tagno == (int)td->tags_count) { - /* - * This must be the _untagged_ ANY type, - * which outermost tag isn't known in advance. - * Fetch the tag and length separately. - */ - tag_len = ber_fetch_tag(ptr, size, &tlv_tag); - switch(tag_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - tlv_constr = BER_TLV_CONSTRUCTED(ptr); - len_len = ber_fetch_length(tlv_constr, - (const char *)ptr + tag_len, size - tag_len, &tlv_len); - switch(len_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - ASN_DEBUG("Advancing %ld in ANY case", - (long)(tag_len + len_len)); - ADVANCE(tag_len + len_len); - } else { - assert(tagno < (int)td->tags_count); /* At least one loop */ - } - for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { - - /* - * Fetch and process T from TLV. - */ - tag_len = ber_fetch_tag(ptr, size, &tlv_tag); - ASN_DEBUG("Fetching tag from {%p,%ld}: " - "len %ld, step %d, tagno %d got %s", - ptr, (long)size, - (long)tag_len, step, tagno, - ber_tlv_tag_string(tlv_tag)); - switch(tag_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(ptr); - - /* - * If {I}, don't check anything. - * If {I,B,C}, check B and C unless we're at I. - */ - if(tag_mode != 0 && step == 0) { - /* - * We don't expect tag to match here. - * It's just because we don't know how the tag - * is supposed to look like. - */ - } else { - assert(tagno >= 0); /* Guaranteed by the code above */ - if(tlv_tag != td->tags[tagno]) { - /* - * Unexpected tag. Too bad. - */ - ASN_DEBUG("Expected: %s, " - "expectation failed (tn=%d, tm=%d)", - ber_tlv_tag_string(td->tags[tagno]), - tagno, tag_mode - ); - RETURN(RC_FAIL); - } - } - - /* - * Attention: if there are more tags expected, - * ensure that the current tag is presented - * in constructed form (it contains other tags!). - * If this one is the last one, check that the tag form - * matches the one given in descriptor. - */ - if(tagno < ((int)td->tags_count - 1)) { - if(tlv_constr == 0) { - ASN_DEBUG("tlv_constr = %d, expfail", - tlv_constr); - RETURN(RC_FAIL); - } - } else { - if(last_tag_form != tlv_constr - && last_tag_form != -1) { - ASN_DEBUG("last_tag_form %d != %d", - last_tag_form, tlv_constr); - RETURN(RC_FAIL); - } - } - - /* - * Fetch and process L from TLV. - */ - len_len = ber_fetch_length(tlv_constr, - (const char *)ptr + tag_len, size - tag_len, &tlv_len); - ASN_DEBUG("Fetching len = %ld", (long)len_len); - switch(len_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - /* - * FIXME - * As of today, the chain of tags - * must either contain several indefinite length TLVs, - * or several definite length ones. - * No mixing is allowed. - */ - if(tlv_len == -1) { - /* - * Indefinite length. - */ - if(limit_len == -1) { - expect_00_terminators++; - } else { - ASN_DEBUG("Unexpected indefinite length " - "in a chain of definite lengths"); - RETURN(RC_FAIL); - } - ADVANCE(tag_len + len_len); - continue; - } else { - if(expect_00_terminators) { - ASN_DEBUG("Unexpected definite length " - "in a chain of indefinite lengths"); - RETURN(RC_FAIL); - } - } - - /* - * Check that multiple TLVs specify ever decreasing length, - * which is consistent. - */ - if(limit_len == -1) { - limit_len = tlv_len + tag_len + len_len; - if(limit_len < 0) { - /* Too great tlv_len value? */ - RETURN(RC_FAIL); - } - } else if(limit_len != tlv_len + tag_len + len_len) { - /* - * Inner TLV specifies length which is inconsistent - * with the outer TLV's length value. - */ - ASN_DEBUG("Outer TLV is %ld and inner is %ld", - (long)limit_len, (long)tlv_len); - RETURN(RC_FAIL); - } - - ADVANCE(tag_len + len_len); - - limit_len -= (tag_len + len_len); - if((ssize_t)size > limit_len) { - /* - * Make sure that we won't consume more bytes - * from the parent frame than the inferred limit. - */ - size = limit_len; - } - } - - if(opt_tlv_form) - *opt_tlv_form = tlv_constr; - if(expect_00_terminators) - *last_length = -expect_00_terminators; - else - *last_length = tlv_len; - - RETURN(RC_OK); -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_decoder.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_decoder.h deleted file mode 100644 index 1ac2a5e..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_decoder.h +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_DECODER_H_ -#define _BER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ -struct asn_codec_ctx_s; /* Forward declaration */ - -/* - * The BER decoder of any type. - * This function may be invoked directly from the application. - * Decodes BER, DER and CER data (DER and CER are different subsets of BER). - * - * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding - * which is compliant with ber_decode(). - */ -asn_dec_rval_t ber_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - -/* - * Type of generic function which decodes the byte stream into the structure. - */ -typedef asn_dec_rval_t(ber_type_decoder_f)( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, - const void *buf_ptr, size_t size, int tag_mode); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Check that all tags correspond to the type definition (as given in head). - * On return, last_length would contain either a non-negative length of the - * value part of the last TLV, or the negative number of expected - * "end of content" sequences. The number may only be negative if the - * head->last_tag_form is non-zero. - */ -asn_dec_rval_t ber_check_tags( - const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ - const struct asn_TYPE_descriptor_s *type_descriptor, - asn_struct_ctx_t *opt_ctx, /* saved decoding context */ - const void *ptr, size_t size, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {-1,0:1}: any, primitive, constr */ - ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_DECODER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_length.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_length.c deleted file mode 100644 index 0a0deec..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_length.c +++ /dev/null @@ -1,168 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -ssize_t -ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, - ber_tlv_len_t *len_r) { - const uint8_t *buf = (const uint8_t *)bufptr; - unsigned oct; - - if(size == 0) - return 0; /* Want more */ - - oct = *(const uint8_t *)buf; - if((oct & 0x80) == 0) { - /* - * Short definite length. - */ - *len_r = oct; /* & 0x7F */ - return 1; - } else { - ber_tlv_len_t len; - size_t skipped; - - if(_is_constructed && oct == 0x80) { - *len_r = -1; /* Indefinite length */ - return 1; - } - - if(oct == 0xff) { - /* Reserved in standard for future use. */ - return -1; - } - - oct &= 0x7F; /* Leave only the 7 LS bits */ - for(len = 0, buf++, skipped = 1; - oct && (++skipped <= size); buf++, oct--) { - - /* Verify that we won't overflow. */ - if(!(len >> ((8 * sizeof(len)) - (8+1)))) { - len = (len << 8) | *buf; - } else { - /* Too large length value. */ - return -1; - } - } - - if(oct == 0) { - if(len < 0 || len > RSSIZE_MAX) { - /* Length value out of sane range. */ - return -1; - } - - *len_r = len; - return skipped; - } - - return 0; /* Want more */ - } - -} - -ssize_t -ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, - int _is_constructed, const void *ptr, size_t size) { - ber_tlv_len_t vlen; /* Length of V in TLV */ - ssize_t tl; /* Length of L in TLV */ - ssize_t ll; /* Length of L in TLV */ - size_t skip; - - /* - * Make sure we didn't exceed the maximum stack size. - */ - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - return -1; - - /* - * Determine the size of L in TLV. - */ - ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); - if(ll <= 0) return ll; - - /* - * Definite length. - */ - if(vlen >= 0) { - skip = ll + vlen; - if(skip > size) - return 0; /* Want more */ - return skip; - } - - /* - * Indefinite length! - */ - ASN_DEBUG("Skipping indefinite length"); - for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { - ber_tlv_tag_t tag; - - /* Fetch the tag */ - tl = ber_fetch_tag(ptr, size, &tag); - if(tl <= 0) return tl; - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - ((const char *)ptr) + tl, size - tl); - if(ll <= 0) return ll; - - skip += tl + ll; - - /* - * This may be the end of the indefinite length structure, - * two consecutive 0 octets. - * Check if it is true. - */ - if(((const uint8_t *)ptr)[0] == 0 - && ((const uint8_t *)ptr)[1] == 0) - return skip; - - ptr = ((const char *)ptr) + tl + ll; - size -= tl + ll; - } - - /* UNREACHABLE */ -} - -size_t -der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { - size_t required_size; /* Size of len encoding */ - uint8_t *buf = (uint8_t *)bufp; - uint8_t *end; - int i; - - if(len <= 127) { - /* Encoded in 1 octet */ - if(size) *buf = (uint8_t)len; - return 1; - } - - /* - * Compute the size of the subsequent bytes. - */ - for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { - if(len >> i) - required_size++; - else - break; - } - - if(size <= required_size) - return required_size + 1; - - *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ - - /* - * Produce the len encoding, space permitting. - */ - end = buf + required_size; - for(i -= 8; buf < end; i -= 8, buf++) - *buf = (uint8_t)(len >> i); - - return required_size + 1; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_length.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_length.h deleted file mode 100644 index d1e4d48..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_length.h +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_TLV_LENGTH_H_ -#define _BER_TLV_LENGTH_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ssize_t ber_tlv_len_t; - -/* - * This function tries to fetch the length of the BER TLV value and place it - * in *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - * On return with >0, len_r is constrained as -1..MAX, where -1 mean - * that the value is of indefinite length. - */ -ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, - ber_tlv_len_t *len_r); - -/* - * This function expects bufptr to be positioned over L in TLV. - * It returns number of bytes occupied by L and V together, suitable - * for skipping. The function properly handles indefinite length. - * RETURN VALUES: - * Standard {-1,0,>0} convention. - */ -ssize_t ber_skip_length( - const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ - int _is_constructed, const void *bufptr, size_t size); - -/* - * This function serializes the length (L from TLV) in DER format. - * It always returns number of bytes necessary to represent the length, - * it is a caller's responsibility to check the return value - * against the supplied buffer's size. - */ -size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_tag.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_tag.c deleted file mode 100644 index 4a7d732..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_tag.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -ssize_t -ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { - ber_tlv_tag_t val; - ber_tlv_tag_t tclass; - size_t skipped; - - if(size == 0) - return 0; - - val = *(const uint8_t *)ptr; - tclass = (val >> 6); - if((val &= 0x1F) != 0x1F) { - /* - * Simple form: everything encoded in a single octet. - * Tag Class is encoded using two least significant bits. - */ - *tag_r = (val << 2) | tclass; - return 1; - } - - /* - * Each octet contains 7 bits of useful information. - * The MSB is 0 if it is the last octet of the tag. - */ - for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; - skipped <= size; - ptr = ((const char *)ptr) + 1, skipped++) { - unsigned int oct = *(const uint8_t *)ptr; - if(oct & 0x80) { - val = (val << 7) | (oct & 0x7F); - /* - * Make sure there are at least 9 bits spare - * at the MS side of a value. - */ - if(val >> ((8 * sizeof(val)) - 9)) { - /* - * We would not be able to accomodate - * any more tag bits. - */ - return -1; - } - } else { - val = (val << 7) | oct; - *tag_r = (val << 2) | tclass; - return skipped; - } - } - - return 0; /* Want more */ -} - - -ssize_t -ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { - char buf[sizeof("[APPLICATION ]") + 32]; - ssize_t ret; - - ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); - if(ret >= (ssize_t)sizeof(buf) || ret < 2) { - errno = EPERM; - return -1; - } - - return fwrite(buf, 1, ret, f); -} - -ssize_t -ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { - const char *type = 0; - int ret; - - switch(tag & 0x3) { - case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; - case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; - case ASN_TAG_CLASS_CONTEXT: type = ""; break; - case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; - } - - ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); - if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ - - return ret; -} - -char * -ber_tlv_tag_string(ber_tlv_tag_t tag) { - static char buf[sizeof("[APPLICATION ]") + 32]; - - (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); - - return buf; -} - - -size_t -ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { - int tclass = BER_TAG_CLASS(tag); - ber_tlv_tag_t tval = BER_TAG_VALUE(tag); - uint8_t *buf = (uint8_t *)bufp; - uint8_t *end; - size_t required_size; - size_t i; - - if(tval <= 30) { - /* Encoded in 1 octet */ - if(size) buf[0] = (tclass << 6) | tval; - return 1; - } else if(size) { - *buf++ = (tclass << 6) | 0x1F; - size--; - } - - /* - * Compute the size of the subsequent bytes. - */ - for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { - if(tval >> i) - required_size++; - else - break; - } - - if(size < required_size) - return required_size + 1; - - /* - * Fill in the buffer, space permitting. - */ - end = buf + required_size - 1; - for(i -= 7; buf < end; i -= 7, buf++) - *buf = 0x80 | ((tval >> i) & 0x7F); - *buf = (tval & 0x7F); /* Last octet without high bit */ - - return required_size + 1; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_tag.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_tag.h deleted file mode 100644 index ce227ad..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/ber_tlv_tag.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_TLV_TAG_H_ -#define _BER_TLV_TAG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -enum asn_tag_class { - ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ - ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ - ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ - ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ -}; -typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ - -/* - * Tag class is encoded together with tag value for optimization purposes. - */ -#define BER_TAG_CLASS(tag) ((tag) & 0x3) -#define BER_TAG_VALUE(tag) ((tag) >> 2) -#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) - -#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) - -/* - * Several functions for printing the TAG in the canonical form - * (i.e. "[PRIVATE 0]"). - * Return values correspond to their libc counterparts (if any). - */ -ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); -ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); -char *ber_tlv_tag_string(ber_tlv_tag_t tag); - - -/* - * This function tries to fetch the tag from the input stream. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering tag. - * >0: Number of bytes used from bufptr. tag_r will contain the tag. - */ -ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); - -/* - * This function serializes the tag (T from TLV) in BER format. - * It always returns number of bytes necessary to represent the tag, - * it is a caller's responsibility to check the return value - * against the supplied buffer's size. - */ -size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_TLV_TAG_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_CHOICE.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_CHOICE.c deleted file mode 100644 index 613e6ea..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_CHOICE.c +++ /dev/null @@ -1,1511 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * See the definitions. - */ -static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, - unsigned size); -static void _set_present_idx(void *sptr, unsigned offset, unsigned size, - unsigned pres); -static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, - const void *sptr, asn_TYPE_member_t **elm, - unsigned *present); - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * The decoder of the CHOICE type. - */ -asn_dec_rval_t -CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - if(tag_mode || td->tags_count) { - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, -1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) { - /* ?Substracted below! */ - ctx->left += rval.consumed; - } - ADVANCE(rval.consumed); - } else { - ctx->left = -1; - } - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - - key.el_tag = tlv_tag; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG("Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - - ASN_DEBUG("Skipping unknown tag %s", - ber_tlv_tag_string(tlv_tag)); - - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - RETURN(RC_OK); - } - } while(0); - - case 2: - /* - * PHASE 2. - * Read in the element. - */ - do { - asn_TYPE_member_t *elm;/* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &elements[ctx->step]; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - /* Set presence to be able to free it properly at any time */ - _set_present_idx(st, specs->pres_offset, - specs->pres_size, ctx->step + 1); - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, - memb_ptr2, ptr, LEFT, elm->tag_mode); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - RETURN(RC_FAIL); - case RC_FAIL: /* Fatal error */ - RETURN(rval.code); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } while(0); - - NEXT_PHASE(ctx); - - /* Fall through */ - case 3: - ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", - td->name, (long)ctx->left, (long)size, - tag_mode, td->tags_count); - - if(ctx->left > 0) { - /* - * The type must be fully decoded - * by the CHOICE member-specific decoder. - */ - RETURN(RC_FAIL); - } - - if(ctx->left == -1 - && !(tag_mode || td->tags_count)) { - /* - * This is an untagged CHOICE. - * It doesn't contain nothing - * except for the member itself, including all its tags. - * The decoding is completed. - */ - NEXT_PHASE(ctx); - break; - } - - /* - * Read in the "end of data chunks"'s. - */ - while(ctx->left < 0) { - ssize_t tl; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * Expected <0><0>... - */ - if(((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - continue; - } - } else { - ASN_DEBUG("Unexpected continuation in %s", - td->name); - RETURN(RC_FAIL); - } - - /* UNREACHABLE */ - } - - NEXT_PHASE(ctx); - case 4: - /* No meaningful work here */ - break; - } - - RETURN(RC_OK); -} - -asn_enc_rval_t -CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - asn_enc_rval_t erval = {0,0,0}; - const void *memb_ptr; - size_t computed_size = 0; - unsigned present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("%s %s as CHOICE", - cb?"Encoding":"Estimating", td->name); - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) { - if(present == 0 && td->elements_count == 0) { - /* The CHOICE is empty?! */ - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - ASN__ENCODE_FAILED; - } - - /* - * Seek over the present member of the structure. - */ - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - if(elm->optional) { - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* - * If the CHOICE itself is tagged EXPLICIT: - * T ::= [2] EXPLICIT CHOICE { ... } - * Then emit the appropriate tags. - */ - if(tag_mode == 1 || td->tags_count) { - /* - * For this, we need to pre-compute the member. - */ - ssize_t ret; - - /* Encode member with its tag */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - - /* Encode CHOICE with parent or my own tag */ - ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, - cb, app_key); - if(ret == -1) - ASN__ENCODE_FAILED; - computed_size += ret; - } - - /* - * Encode the single underlying member. - */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, cb, app_key); - if(erval.encoded == -1) - return erval; - - ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", - (long)erval.encoded, (long)computed_size); - - erval.encoded += computed_size; - - return erval; -} - -ber_tlv_tag_t -CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - assert(tag_mode == 0); (void)tag_mode; - assert(tag == 0); (void)tag; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - if(present > 0 && present <= td->elements_count) { - const asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *) - ((const char *)ptr + elm->memb_offset); - } else { - memb_ptr = (const void *) - ((const char *)ptr + elm->memb_offset); - } - - return asn_TYPE_outmost_tag(elm->type, memb_ptr, - elm->tag_mode, elm->tag); - } else { - return (ber_tlv_tag_t)-1; - } -} - -int -CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - return 0; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory CHOICE element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: no CHOICE element given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value of a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - if(ctx->phase == 0 && !*xml_tag) - ctx->phase = 1; /* Skip the outer tag checking phase */ - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Only waiting for closing tag. - * Phase 4: Skipping unknown extensions. - * Phase 5: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 4;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the member. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - unsigned old_present; - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Start/Continue decoding the inner member */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", - elm->type->name, tmprval.code); - old_present = _fetch_present_idx(st, - specs->pres_offset, specs->pres_size); - assert(old_present == 0 || old_present == edx + 1); - /* Record what we've got */ - _set_present_idx(st, - specs->pres_offset, specs->pres_size, edx + 1); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 3; - /* Fall through */ - } - - /* No need to wait for closing tag; special mode. */ - if(ctx->phase == 3 && !*xml_tag) { - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - xml_tag, tcv); - - /* Skip the extensions section */ - if(ctx->phase == 4) { - ASN_DEBUG("skip_unknown(%d, %ld)", - tcv, (long)ctx->left); - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 5; - RETURN(RC_FAIL); - case 1: - ctx->phase = 3; - /* Fall through */ - case 0: - XER_ADVANCE(ch_size); - continue; - case 2: - ctx->phase = 3; - break; - } - } - - switch(tcv) { - case XCT_BOTH: - break; /* No CHOICE? */ - case XCT_CLOSING: - if(ctx->phase != 3) - break; - XER_ADVANCE(ch_size); - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - if(ctx->phase != 1) - break; /* Really unexpected */ - - /* - * Search which inner member corresponds to this tag. - */ - for(edx = 0; edx < td->elements_count; edx++) { - elm = &td->elements[edx]; - tcv = xer_check_tag(buf_ptr,ch_size,elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - edx = td->elements_count; - break; /* Phase out */ - } - break; - } - if(edx != td->elements_count) - continue; - - /* It is expected extension */ - if(specs->ext_start != -1) { - ASN_DEBUG("Got anticipated extension"); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - ctx->phase = 3; /* Terminating */ - } else { - ctx->left = 1; - ctx->phase = 4; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" - " (ph=%d, tag=%s)", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - td->name, ctx->phase, xml_tag); - break; - } - - ctx->phase = 5; /* Phase out, just in case */ - RETURN(RC_FAIL); -} - - -asn_enc_rval_t -CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - unsigned present = 0; - - if(!sptr) - ASN__ENCODE_FAILED; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr = NULL; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - er.encoded = 0; - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_dec_rval_t -CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) { - ASN_DEBUG("CHOICE presence from wire %d", value); - value = specs->from_canonical_order[value]; - ASN_DEBUG("CHOICE presence index effective %d", value); - } - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - if(ct && ct->range_bits >= 0) { - if(present_enc < ct->lower_bound - || present_enc > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG( - "CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - - elm = &td->elements[present]; - ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, - present_enc); - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) ASN__ENCODE_FAILED; - if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -asn_dec_rval_t -CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) - value = specs->from_canonical_order[value]; - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - int present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || (unsigned)present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present = specs->to_canonical_order[present]; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - if(ct && ct->range_bits >= 0) { - if(present < ct->lower_bound - || present > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) - ASN__ENCODE_FAILED; - if (ct) { - if(aper_put_nsnnwn(po, ct->range_bits, present - specs->ext_start)) - ASN__ENCODE_FAILED; - } - if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -int -CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - /* - * Print that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Print member's name and stuff */ - if(0) { - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - } - - return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, - cb, app_key); - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as CHOICE", td->name); - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - /* - * Free that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)ptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)ptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } -} - - -/* - * The following functions functions offer protection against -fshort-enums, - * compatible with little- and big-endian machines. - * If assertion is triggered, either disable -fshort-enums, or add an entry - * here with the ->pres_size of your target stracture. - * Unless the target structure is packed, the ".present" member - * is guaranteed to be aligned properly. ASN.1 compiler itself does not - * produce packed code. - */ -static unsigned -_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, - unsigned pres_size) { - const void *present_ptr; - unsigned present; - - present_ptr = ((const char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): present = *(const unsigned int *)present_ptr; break; - case sizeof(short): present = *(const unsigned short *)present_ptr; break; - case sizeof(char): present = *(const unsigned char *)present_ptr; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - return 0; /* If not aborted, pass back safe value */ - } - - return present; -} - -static void -_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, - unsigned present) { - void *present_ptr; - present_ptr = ((char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): *(unsigned int *)present_ptr = present; break; - case sizeof(short): *(unsigned short *)present_ptr = present; break; - case sizeof(char): *(unsigned char *)present_ptr = present; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - } -} - -static const void * -_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_TYPE_member_t **elm_ptr, unsigned *present_out) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - *elm_ptr = NULL; - *present_out = 0; - return NULL; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - *present_out = present; - - /* - * The presence index is intentionally 1-based to avoid - * treating zeroed structure as a valid one. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *const elm = &td->elements[present - 1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - *elm_ptr = elm; - return memb_ptr; - } else { - *elm_ptr = NULL; - return NULL; - } - -} - -int -CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - asn_TYPE_member_t *aelm; - asn_TYPE_member_t *belm; - unsigned apresent = 0; - unsigned bpresent = 0; - const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); - const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); - - if(amember && bmember) { - if(apresent == bpresent) { - assert(aelm == belm); - return aelm->type->op->compare_struct(aelm->type, amember, bmember); - } else if(apresent < bpresent) { - return -1; - } else { - return 1; - } - } else if(!amember) { - return -1; - } else { - return 1; - } -} - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned -CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); -} - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int -CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, - unsigned present) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned old_present; - - if(!sptr) { - return -1; - } - - if(present > td->elements_count) - return -1; - - old_present = - _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - if(present == old_present) - return 0; - - if(old_present != 0) { - assert(old_present <= td->elements_count); - ASN_STRUCT_RESET(*td, sptr); - } - - _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); - - return 0; -} - - -asn_random_fill_result_t -CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_random_fill_result_t res; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm; - unsigned present; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *st = *sptr; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - present = asn_random_between(1, td->elements_count); - elm = &td->elements[present - 1]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - res = elm->type->op->random_fill(elm->type, memb_ptr2, - &elm->encoding_constraints, max_length); - _set_present_idx(st, specs->pres_offset, specs->pres_size, present); - if(res.code == ARFILL_OK) { - *sptr = st; - } else { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - } - - return res; -} - - -asn_TYPE_operation_t asn_OP_CHOICE = { - CHOICE_free, - CHOICE_print, - CHOICE_compare, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - CHOICE_decode_oer, - CHOICE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - CHOICE_decode_uper, - CHOICE_encode_uper, - CHOICE_decode_aper, - CHOICE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - CHOICE_random_fill, - CHOICE_outmost_tag -}; diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_CHOICE.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_CHOICE.h deleted file mode 100644 index a1999ed..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_CHOICE.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_CHOICE_H_ -#define _CONSTR_CHOICE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct asn_CHOICE_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the target structure. */ - unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ - unsigned pres_offset; /* Identifier of the present member */ - unsigned pres_size; /* Size of the identifier (enum) */ - - /* - * Tags to members mapping table. - */ - const asn_TYPE_tag2member_t *tag2el; - unsigned tag2el_count; - - /* Canonical ordering of CHOICE elements, for PER */ - const unsigned *to_canonical_order; - const unsigned *from_canonical_order; - - /* - * Extensions-related stuff. - */ - signed ext_start; /* First member of extensions, or -1 */ -} asn_CHOICE_specifics_t; - -/* - * A set specialized functions dealing with the CHOICE type. - */ -asn_struct_free_f CHOICE_free; -asn_struct_print_f CHOICE_print; -asn_struct_compare_f CHOICE_compare; -asn_constr_check_f CHOICE_constraint; -ber_type_decoder_f CHOICE_decode_ber; -der_type_encoder_f CHOICE_encode_der; -xer_type_decoder_f CHOICE_decode_xer; -xer_type_encoder_f CHOICE_encode_xer; -oer_type_decoder_f CHOICE_decode_oer; -oer_type_encoder_f CHOICE_encode_oer; -per_type_decoder_f CHOICE_decode_uper; -per_type_encoder_f CHOICE_encode_uper; -per_type_decoder_f CHOICE_decode_aper; -per_type_encoder_f CHOICE_encode_aper; -asn_outmost_tag_f CHOICE_outmost_tag; -asn_random_fill_f CHOICE_random_fill; -extern asn_TYPE_operation_t asn_OP_CHOICE; - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, - const void *structure_ptr); - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, - void *structure_ptr, unsigned present); - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_CHOICE_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE.c deleted file mode 100644 index 43dcac7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE.c +++ /dev/null @@ -1,2059 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -/* - * Tags are canonically sorted in the tag2element map. - */ -static int -_t2e_cmp(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) { - if(a->el_no > b->el_no) - return 1; - /* - * Important: we do not check - * for a->el_no <= b->el_no! - */ - return 0; - } else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - - -/* - * The decoder of the SEQUENCE type. - */ -asn_dec_rval_t -SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* SEQUENCE element's index */ - - ASN_DEBUG("Decoding %s as SEQUENCE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next member from the list of - * this structure's elements. - * (ctx->step) stores the member being processed - * between invocations and the microphase {0,1} of parsing - * that member: - * step = ( * 2 + ). - */ - for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; - edx++, ctx->step = (ctx->step & ~1) + 2) { - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - ssize_t tag_len; /* Length of TLV's T */ - size_t opt_edx_end; /* Next non-optional element */ - size_t n; - int use_bsearch; - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" - " opt=%d ec=%d", - td->name, (int)ctx->left, edx, - elements[edx].flags, elements[edx].optional, - td->elements_count); - - if(ctx->left == 0 /* No more stuff is expected */ - && ( - /* Explicit OPTIONAL specification reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx))) { - ASN_DEBUG("End of SEQUENCE %s", td->name); - /* - * Found the legitimate end of the structure. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " - "(%s) is %s encoded in %d bytes, of frame %ld", - td->name, edx, elements[edx].name, - ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } else if(((const uint8_t *)ptr)[1] == 0) { - ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, - elements[edx].optional, td->elements_count); - if((edx + elements[edx].optional == td->elements_count) - || IN_EXTENSION_GROUP(specs, edx)) { - /* - * Yeah, baby! Found the terminator - * of the indefinite length structure. - */ - /* - * Proceed to the canonical - * finalization function. - * No advancing is necessary. - */ - goto phase3; - } - } - } - - /* - * Find the next available type with this tag. - */ - use_bsearch = 0; - opt_edx_end = edx + elements[edx].optional + 1; - if(opt_edx_end > td->elements_count) - opt_edx_end = td->elements_count; /* Cap */ - else if(opt_edx_end - edx > 8) { - /* Limit the scope of linear search... */ - opt_edx_end = edx + 8; - use_bsearch = 1; - /* ... and resort to bsearch() */ - } - for(n = edx; n < opt_edx_end; n++) { - if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { - /* - * Found element corresponding to the tag - * being looked at. - * Reposition over the right element. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].flags & ATF_ANY_TYPE) { - /* - * This is the ANY type, which may bear - * any flag whatsoever. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].tag == (ber_tlv_tag_t)-1) { - use_bsearch = 1; - break; - } - } - if(use_bsearch) { - /* - * Resort to a binary search over - * sorted array of tags. - */ - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - key.el_no = edx; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _t2e_cmp); - if(t2m) { - const asn_TYPE_tag2member_t *best = 0; - const asn_TYPE_tag2member_t *t2m_f, *t2m_l; - size_t edx_max = edx + elements[edx].optional; - /* - * Rewind to the first element with that tag, - * `cause bsearch() does not guarantee order. - */ - t2m_f = t2m + t2m->toff_first; - t2m_l = t2m + t2m->toff_last; - for(t2m = t2m_f; t2m <= t2m_l; t2m++) { - if(t2m->el_no > edx_max) break; - if(t2m->el_no < edx) continue; - best = t2m; - } - if(best) { - edx = best->el_no; - ctx->step = 1 + 2 * edx; - goto microphase2; - } - } - n = opt_edx_end; - } - if(n == opt_edx_end) { - /* - * If tag is unknown, it may be either - * an unknown (thus, incorrect) tag, - * or an extension (...), - * or an end of the indefinite-length structure. - */ - if(!IN_EXTENSION_GROUP(specs, - edx + elements[edx].optional)) { - ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - ASN_DEBUG("Expected tag %s (%s)%s", - ber_tlv_tag_string(elements[edx].tag), - elements[edx].name, - elements[edx].optional - ?" or alternatives":""); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - edx += elements[edx].optional; - - ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - ASN_DEBUG("Skip length %d in %s", - (int)skip, td->name); - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - ctx->step -= 2; - edx--; - continue; /* Try again with the next tag */ - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elements[edx].flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elements[edx].memb_offset; - memb_ptr2 = &memb_ptr; - } - /* - * Invoke the member fetch routine according to member's type - */ - if(elements[edx].flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); - } else { - rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, - elements[edx].type, - memb_ptr2, ptr, LEFT, - elements[edx].tag_mode); - } - ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " - "in %d bytes rval.code %d, size=%d", - td->name, edx, elements[edx].type->name, - (int)LEFT, (int)rval.consumed, rval.code, (int)size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", - (long)ctx->left, (long)size); - /* Fall through */ - case RC_FAIL: /* Fatal error */ - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all structure members) */ - - phase3: - ctx->phase = 3; - /* Fall through */ - case 3: /* 00 and other tags expected */ - case 4: /* only 00's expected */ - - ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", - td->name, (long)ctx->left, (long)size); - - /* - * Skip everything until the end of the SEQUENCE. - */ - while(ctx->left) { - ssize_t tl, ll; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * If expected <0><0>... - */ - if(ctx->left < 0 - && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - ctx->phase = 4; - continue; - } - } - - if(!IN_EXTENSION_GROUP(specs, td->elements_count) - || ctx->phase == 4) { - ASN_DEBUG("Unexpected continuation " - "of a non-extensible type " - "%s (SEQUENCE): %s", - td->name, - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tl, LEFT - tl); - switch(ll) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(tl + ll); - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - - -/* - * The DER encoder of the SEQUENCE type. - */ -asn_enc_rval_t -SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t computed_size = 0; - asn_enc_rval_t erval = {0,0,0}; - ssize_t ret; - size_t edx; - - ASN_DEBUG("%s %s as SEQUENCE", - cb?"Encoding":"Estimating", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", - edx, elm->name, (long)erval.encoded); - } - - /* - * Encode the TLV for the sequence itself. - */ - ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); - if(ret == -1) - ASN__ENCODE_FAILED; - erval.encoded = computed_size + ret; - - if(!cb) ASN__ENCODED_OK(erval); - - /* - * Encode all members. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t tmperval = {0,0,0}; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) continue; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, cb, app_key); - if(tmperval.encoded == -1) - return tmperval; - computed_size -= tmperval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", - edx, elm->name, td->name, (long)tmperval.encoded); - } - - if(computed_size != 0) - /* - * Encoded size is not equal to the computed size. - */ - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(erval); -} - - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) \ - do { \ - size_t num = (num_bytes); \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Skipping unknown extensions. - * Phase 4: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 3;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the inner member of a sequence. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr_dontuse; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr_dontuse = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ - } - - if(elm->flags & ATF_OPEN_TYPE) { - tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - /* Invoke the inner type decoder, m.b. multiple times */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - ptr, size); - } - XER_ADVANCE(tmprval.consumed); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 1; /* Back to body processing */ - ctx->step = ++edx; - ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", - ctx->phase, ctx->step); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", - tcv, ctx->phase, xml_tag); - - /* Skip the extensions section */ - if(ctx->phase == 3) { - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 4; - RETURN(RC_FAIL); - case 0: - XER_ADVANCE(ch_size); - continue; - case 1: - XER_ADVANCE(ch_size); - ctx->phase = 1; - continue; - case 2: - ctx->phase = 1; - break; - } - } - - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - if(edx >= td->elements_count || - /* Explicit OPTIONAL specs reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx)) { - XER_ADVANCE(ch_size); - ctx->phase = 4; /* Phase out */ - RETURN(RC_OK); - } else { - ASN_DEBUG("Premature end of XER SEQUENCE"); - RETURN(RC_FAIL); - } - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", - tcv, ctx->phase, edx); - if(ctx->phase != 1) { - break; /* Really unexpected */ - } - - if(edx < td->elements_count) { - /* - * Search which member corresponds to this tag. - */ - size_t n; - size_t edx_end = edx + elements[edx].optional + 1; - if(edx_end > td->elements_count) - edx_end = td->elements_count; - for(n = edx; n < edx_end; n++) { - elm = &td->elements[n]; - tcv = xer_check_tag(ptr, ch_size, elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx = n; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - n = edx_end; - break; /* Phase out */ - } - break; - } - if(n != edx_end) - continue; - } else { - ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", - edx, td->elements_count); - } - - /* It is expected extension */ - if(IN_EXTENSION_GROUP(specs, - edx + (edx < td->elements_count - ? elements[edx].optional : 0))) { - ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", - edx); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - } else { - ctx->left = 1; - ctx->phase = 3; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", - size>0?((const char *)ptr)[0]:'.', - size>1?((const char *)ptr)[1]:'.', - size>2?((const char *)ptr)[2]:'.', - size>3?((const char *)ptr)[3]:'.', - size>4?((const char *)ptr)[4]:'.', - size>5?((const char *)ptr)[5]:'.'); - break; - } - - ctx->phase = 4; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - -asn_enc_rval_t -SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - int xcan = (flags & XER_F_CANONICAL); - asn_TYPE_descriptor_t *tmp_def_val_td = 0; - void *tmp_def_val = 0; - size_t edx; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - assert(tmp_def_val == 0); - if(elm->default_value_set) { - if(elm->default_value_set(&tmp_def_val)) { - ASN__ENCODE_FAILED; - } else { - memb_ptr = tmp_def_val; - tmp_def_val_td = elm->type; - } - } else if(elm->optional) { - continue; - } else { - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - /* Print the member itself */ - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmp_def_val) { - ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - tmp_def_val = 0; - } - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - ASN__ENCODE_FAILED; -} - -int -SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t edx; - int ret; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Print line */ - /* Fall through */ - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Indentation */ - _i_INDENT(1); - - /* Print the member's name and stuff */ - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - - /* Print the member itself */ - ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, - cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - size_t edx; - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_struct_ctx_t *ctx; /* Decoder context */ - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as SEQUENCE", td->name); - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - /* Clean parsing context */ - ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); - FREEMEM(ctx->ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset( - sptr, 0, - ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); - break; - } -} - -int -SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t edx; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Iterate over structure members and check their validity. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - if(ret) return ret; - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; - edx < (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = uper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, (long)bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, - *memb_ptr2); - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: break; - case 0: continue; - default: - if(uper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - ASN_DEBUG("Skipped overflow extension"); - continue; - } - break; - } - - FREEMEM(epres); - } - - if(specs->first_extension >= 0) { - unsigned i; - /* Fill DEFAULT members in extensions */ - for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; - i++) { - asn_TYPE_member_t *elm; - void **memb_ptr2; /* Pointer to member pointer */ - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) { - return -1; - } - /* Encode as open type field */ - if(po2 && present - && uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - *memb_ptr2, po2)) - return -1; - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(*memb_ptr2) == 0) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, - po); - if(er.encoded == -1) return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of extensions %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(uper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ -#if 0 - int padding; -#endif - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } -#if 0 - /* Get Padding */ - padding = (8 - (pd->moved % 8)) % 8; - if(padding > 0) - ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); -#if 0 /* old way of removing padding */ - per_get_few_bits(pd, padding); -#else /* Experimental fix proposed by @mhanna123 */ - if(edx != (td->elements_count-1)) - per_get_few_bits(pd, padding); - else { - if(specs->roms_count && (padding > 0)) - ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); - else - per_get_few_bits(pd, padding); - } -#endif /* dealing with padding */ -#endif - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = aper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) - ASN__DECODE_STARVED; - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%ld is not extension", edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: - break; - case 0: - continue; - default: - if(aper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - } - break; - } - - FREEMEM(epres); - } - - /* Fill DEFAULT members in extensions */ - for(edx = specs->roms_count; edx < specs->roms_count - + specs->aoms_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void **memb_ptr2; /* Pointer to member pointer */ - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s (@%ld) present => %d", - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) - return -1; - /* Encode as open type field */ - if(po2 && present && aper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) - return -1; - - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr2) == 1) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %ld not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) - continue; - - ASN_DEBUG("Encoding %s->%s", td->name, elm->name); - er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - *memb_ptr2, po); - if(er.encoded == -1) - return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(aper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - size_t edx; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *amemb; - const void *bmemb; - int ret; - - if(elm->flags & ATF_POINTER) { - amemb = - *(const void *const *)((const char *)aptr + elm->memb_offset); - bmemb = - *(const void *const *)((const char *)bptr + elm->memb_offset); - if(!amemb) { - if(!bmemb) continue; - if(elm->default_value_cmp - && elm->default_value_cmp(bmemb) == 0) { - /* A is absent, but B is present and equal to DEFAULT */ - continue; - } - return -1; - } else if(!bmemb) { - if(elm->default_value_cmp - && elm->default_value_cmp(amemb) == 0) { - /* B is absent, but A is present and equal to DEFAULT */ - continue; - } - return 1; - } - } else { - amemb = (const void *)((const char *)aptr + elm->memb_offset); - bmemb = (const void *)((const char *)bptr + elm->memb_offset); - } - - ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); - if(ret != 0) return ret; - } - - return 0; -} - -asn_TYPE_operation_t asn_OP_SEQUENCE = { - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_compare, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_decode_oer, - SEQUENCE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_decode_uper, - SEQUENCE_encode_uper, - SEQUENCE_decode_aper, - SEQUENCE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - void *st = *sptr; - size_t edx; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - for(edx = 0; edx < td->elements_count; edx++) { - const asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_random_fill_result_t tmpres; - - if(elm->optional && asn_random_between(0, 4) == 2) { - /* Sometimes decide not to fill the optional value */ - continue; - } - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - tmpres = elm->type->op->random_fill( - elm->type, memb_ptr2, &elm->encoding_constraints, - max_length > result_ok.length ? max_length - result_ok.length : 0); - switch(tmpres.code) { - case ARFILL_OK: - result_ok.length += tmpres.length; - continue; - case ARFILL_SKIPPED: - assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); - continue; - case ARFILL_FAILED: - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return tmpres; - } - } - - *sptr = st; - - return result_ok; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE.h deleted file mode 100644 index a22ed3a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SEQUENCE_H_ -#define _CONSTR_SEQUENCE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct asn_SEQUENCE_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the target structure. */ - unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - /* - * Tags to members mapping table (sorted). - */ - const asn_TYPE_tag2member_t *tag2el; - unsigned tag2el_count; - - /* - * Optional members of the extensions root (roms) or additions (aoms). - * Meaningful for PER. - */ - const int *oms; /* Optional MemberS */ - unsigned roms_count; /* Root optional members count */ - unsigned aoms_count; /* Additions optional members count */ - - /* - * Description of an extensions group. - * Root components are clustered at the beginning of the structure, - * whereas extensions are clustered at the end. -1 means not extensible. - */ - signed first_extension; /* First extension addition */ -} asn_SEQUENCE_specifics_t; - - -/* - * A set specialized functions dealing with the SEQUENCE type. - */ -asn_struct_free_f SEQUENCE_free; -asn_struct_print_f SEQUENCE_print; -asn_struct_compare_f SEQUENCE_compare; -asn_constr_check_f SEQUENCE_constraint; -ber_type_decoder_f SEQUENCE_decode_ber; -der_type_encoder_f SEQUENCE_encode_der; -xer_type_decoder_f SEQUENCE_decode_xer; -xer_type_encoder_f SEQUENCE_encode_xer; -oer_type_decoder_f SEQUENCE_decode_oer; -oer_type_encoder_f SEQUENCE_encode_oer; -per_type_decoder_f SEQUENCE_decode_uper; -per_type_encoder_f SEQUENCE_encode_uper; -per_type_decoder_f SEQUENCE_decode_aper; -per_type_encoder_f SEQUENCE_encode_aper; -asn_random_fill_f SEQUENCE_random_fill; -extern asn_TYPE_operation_t asn_OP_SEQUENCE; - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE_OF.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE_OF.c deleted file mode 100644 index 10f18cf..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE_OF.c +++ /dev/null @@ -1,358 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The DER encoder of the SEQUENCE OF type. - */ -asn_enc_rval_t -SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - asn_enc_rval_t erval = {0,0,0}; - int edx; - - ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - computed_size += encoding_size; - if(!cb) { - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - cb, app_key); - if(erval.encoded == -1) - return erval; - encoding_size += erval.encoded; - } - - if(computed_size != (size_t)encoding_size) { - /* - * Encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - erval.structure_ptr = 0; - erval.failed_type = 0; - } - - return erval; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 - : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_enc_rval_t -SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - const asn_TYPE_member_t *elm = td->elements; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, - po); - if(er.encoded == -1) ASN__ENCODE_FAILED; - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - ASN__ENCODED_OK(er); -} - -asn_enc_rval_t -SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - asn_TYPE_member_t *elm = td->elements; - int seq; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = (list->count < ct->lower_bound - || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", - ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) - ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) - ASN__ENCODE_FAILED; - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ -/* if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; -*/ - if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) - ASN__ENCODE_FAILED; - } - - for(seq = -1; seq < list->count;) { - ssize_t mayEncode; - if(seq < 0) seq = 0; - if(ct && ct->effective_bits >= 0) { - mayEncode = list->count; - } else { - mayEncode = aper_put_length(po, -1, list->count - seq); - if(mayEncode < 0) ASN__ENCODE_FAILED; - } - - while(mayEncode--) { - void *memb_ptr = list->array[seq++]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->aper_encoder(elm->type, - elm->encoding_constraints.per_constraints, memb_ptr, po); - if(er.encoded == -1) - ASN__ENCODE_FAILED; - } - } - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); - const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); - ssize_t idx; - - if(a && b) { - ssize_t common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, a->array[idx], b->array[idx]); - if(ret) return ret; - } - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { - SEQUENCE_OF_free, - SEQUENCE_OF_print, - SEQUENCE_OF_compare, - SEQUENCE_OF_decode_ber, - SEQUENCE_OF_encode_der, - SEQUENCE_OF_decode_xer, - SEQUENCE_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ - SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ - SEQUENCE_OF_encode_uper, - SEQUENCE_OF_decode_aper, - SEQUENCE_OF_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE_OF.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE_OF.h deleted file mode 100644 index 6857f0f..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SEQUENCE_OF.h +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SEQUENCE_OF_H_ -#define _CONSTR_SEQUENCE_OF_H_ - -#include -#include /* Implemented using SET OF */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A set specialized functions dealing with the SEQUENCE OF type. - * Generally implemented using SET OF. - */ -asn_struct_compare_f SEQUENCE_OF_compare; -der_type_encoder_f SEQUENCE_OF_encode_der; -xer_type_encoder_f SEQUENCE_OF_encode_xer; -per_type_encoder_f SEQUENCE_OF_encode_uper; -per_type_encoder_f SEQUENCE_OF_encode_aper; -extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; - -#define SEQUENCE_OF_free SET_OF_free -#define SEQUENCE_OF_print SET_OF_print -#define SEQUENCE_OF_constraint SET_OF_constraint -#define SEQUENCE_OF_decode_ber SET_OF_decode_ber -#define SEQUENCE_OF_decode_xer SET_OF_decode_xer -#define SEQUENCE_OF_decode_oer SET_OF_decode_oer -#define SEQUENCE_OF_encode_oer SET_OF_encode_oer -#define SEQUENCE_OF_decode_uper SET_OF_decode_uper -#define SEQUENCE_OF_decode_aper SET_OF_decode_aper -#define SEQUENCE_OF_random_fill SET_OF_random_fill - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SET_OF_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SET_OF.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SET_OF.c deleted file mode 100644 index bf1dc27..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SET_OF.c +++ /dev/null @@ -1,1441 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * The decoder of the SET OF type. - */ -asn_dec_rval_t -SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as SET OF", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - ASN_DEBUG("Structure consumes %ld bytes, " - "buffer %ld", (long)ctx->left, (long)size); - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next item. - */ - for(;; ctx->step = 0) { - ssize_t tag_len; /* Length of TLV's T */ - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - - if(ctx->left == 0) { - ASN_DEBUG("End of SET OF %s", td->name); - /* - * No more things to decode. - * Exit out of here. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Found the terminator of the - * indefinite length structure. - */ - break; - } - } - - /* Outmost tag may be unknown and cannot be fetched/compared */ - if(elm->tag != (ber_tlv_tag_t)-1) { - if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { - /* - * The new list member of expected type has arrived. - */ - } else { - ASN_DEBUG("Unexpected tag %s fixed SET OF %s", - ber_tlv_tag_string(tlv_tag), td->name); - ASN_DEBUG("%s SET OF has tag %s", - td->name, ber_tlv_tag_string(elm->tag)); - RETURN(RC_FAIL); - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, - elm->type, &ctx->ptr, ptr, LEFT, 0); - ASN_DEBUG("In %s SET OF %s code %d consumed %d", - td->name, elm->type->name, - rval.code, (int)rval.consumed); - switch(rval.code) { - case RC_OK: - { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - else - ctx->ptr = 0; - } - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - /* Fall through */ - case RC_FAIL: /* Fatal error */ - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all list members) */ - - NEXT_PHASE(ctx); - case 2: - /* - * Read in all "end of content" TLVs. - */ - while(ctx->left < 0) { - if(LEFT < 2) { - if(LEFT > 0 && ((const char *)ptr)[0] != 0) { - /* Unexpected tag */ - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } - if(((const char *)ptr)[0] == 0 - && ((const char *)ptr)[1] == 0) { - ADVANCE(2); - ctx->left++; - } else { - RETURN(RC_FAIL); - } - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - -/* - * Internally visible buffer holding a single encoded element. - */ -struct _el_buffer { - uint8_t *buf; - size_t length; - size_t allocated_size; - unsigned bits_unused; -}; -/* Append bytes to the above structure */ -static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { - struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; - - if(el_buf->length + size > el_buf->allocated_size) { - size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; - void *p; - - do { - new_size <<= 2; - } while(el_buf->length + size > new_size); - - p = REALLOC(el_buf->buf, new_size); - if(p) { - el_buf->buf = p; - el_buf->allocated_size = new_size; - } else { - return -1; - } - } - - memcpy(el_buf->buf + el_buf->length, buffer, size); - - el_buf->length += size; - return 0; -} - -static void assert_unused_bits(const struct _el_buffer* p) { - if(p->length) { - assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); - } else { - assert(p->bits_unused == 0); - } -} - -static int _el_buf_cmp(const void *ap, const void *bp) { - const struct _el_buffer *a = (const struct _el_buffer *)ap; - const struct _el_buffer *b = (const struct _el_buffer *)bp; - size_t common_len; - int ret = 0; - - if(a->length < b->length) - common_len = a->length; - else - common_len = b->length; - - if (a->buf && b->buf) { - ret = memcmp(a->buf, b->buf, common_len); - } - if(ret == 0) { - if(a->length < b->length) - ret = -1; - else if(a->length > b->length) - ret = 1; - /* Ignore unused bits. */ - assert_unused_bits(a); - assert_unused_bits(b); - } - - return ret; -} - -static void -SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { - size_t i; - - for(i = 0; i < count; i++) { - FREEMEM(el_buf[i].buf); - } - - FREEMEM(el_buf); -} - -enum SET_OF__encode_method { - SOES_DER, /* Distinguished Encoding Rules */ - SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ -}; - -static struct _el_buffer * -SET_OF__encode_sorted(const asn_TYPE_member_t *elm, - const asn_anonymous_set_ *list, - enum SET_OF__encode_method method) { - struct _el_buffer *encoded_els; - int edx; - - encoded_els = - (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); - if(encoded_els == NULL) { - return NULL; - } - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - const void *memb_ptr = list->array[edx]; - struct _el_buffer *encoding_el = &encoded_els[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) break; - - /* - * Encode the member into the prepared space. - */ - switch(method) { - case SOES_DER: - erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, - _el_addbytes, encoding_el); - break; - case SOES_CUPER: - erval = uper_encode(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, _el_addbytes, encoding_el); - if(erval.encoded != -1) { - size_t extra_bits = erval.encoded % 8; - assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); - encoding_el->bits_unused = (8 - extra_bits) & 0x7; - } - break; - default: - assert(!"Unreachable"); - break; - } - if(erval.encoded < 0) break; - } - - if(edx == list->count) { - /* - * Sort the encoded elements according to their encoding. - */ - qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); - - return encoded_els; - } else { - SET_OF__encode_sorted_free(encoded_els, edx); - return NULL; - } -} - - -/* - * The DER encoder of the SET OF type. - */ -asn_enc_rval_t -SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - struct _el_buffer *encoded_els; - int edx; - - ASN_DEBUG("Estimating size for SET OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) ASN__ENCODE_FAILED; - - erval = - elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); - if(erval.encoded == -1) return erval; - computed_size += erval.encoded; - } - - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = - der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - if(encoding_size < 0) { - ASN__ENCODE_FAILED; - } - computed_size += encoding_size; - - if(!cb || list->count == 0) { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of %s SET OF", td->name); - - /* - * DER mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the - * encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); - - /* - * Report encoded elements to the application. - * Dispose of temporary sorted members table. - */ - for(edx = 0; edx < list->count; edx++) { - struct _el_buffer *encoded_el = &encoded_els[edx]; - /* Report encoded chunks to the application */ - if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { - break; - } else { - encoding_size += encoded_el->length; - } - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if(edx == list->count) { - asn_enc_rval_t erval = {0,0,0}; - assert(computed_size == (size_t)encoding_size); - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } else { - ASN__ENCODE_FAILED; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *element = td->elements; - const char *elm_tag; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* Which tag is expected for the downstream */ - if(specs->as_XMLValueList) { - elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; - } else { - elm_tag = (*element->name) - ? element->name : element->type->xml_tag; - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - */ - for(; ctx->phase <= 2;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Go inside the inner member of a set. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval = {RC_OK, 0}; - - /* Invoke the inner type decoder, m.b. multiple times */ - ASN_DEBUG("XER/SET OF element [%s]", elm_tag); - tmprval = element->type->op->xer_decoder(opt_codec_ctx, - element->type, &ctx->ptr, elm_tag, - buf_ptr, size); - if(tmprval.code == RC_OK) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - ctx->ptr = 0; - XER_ADVANCE(tmprval.consumed); - } else { - XER_ADVANCE(tmprval.consumed); - RETURN(tmprval.code); - } - ctx->phase = 1; /* Back to body processing */ - ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, - buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", - tcv, ctx->phase, xml_tag); - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - /* No more things to decode */ - XER_ADVANCE(ch_size); - ctx->phase = 3; /* Phase out */ - RETURN(RC_OK); - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); - if(ctx->phase == 1) { - /* - * Process a single possible member. - */ - ctx->phase = 2; - continue; - } - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SET OF"); - break; - } - - ctx->phase = 3; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - - - -typedef struct xer_tmp_enc_s { - void *buffer; - size_t offset; - size_t size; -} xer_tmp_enc_t; -static int -SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { - xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; - if(t->offset + size >= t->size) { - size_t newsize = (t->size << 2) + size; - void *p = REALLOC(t->buffer, newsize); - if(!p) return -1; - t->buffer = p; - t->size = newsize; - } - memcpy((char *)t->buffer + t->offset, buffer, size); - t->offset += size; - return 0; -} -static int -SET_OF_xer_order(const void *aptr, const void *bptr) { - const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; - const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; - size_t minlen = a->offset; - int ret; - if(b->offset < minlen) minlen = b->offset; - /* Well-formed UTF-8 has this nice lexicographical property... */ - ret = memcmp(a->buffer, b->buffer, minlen); - if(ret != 0) return ret; - if(a->offset == b->offset) - return 0; - if(a->offset == minlen) - return -1; - return 1; -} - - -asn_enc_rval_t -SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - xer_tmp_enc_t *encs = 0; - size_t encs_count = 0; - void *original_app_key = app_key; - asn_app_consume_bytes_f *original_cb = cb; - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - if(xcan) { - encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); - if(!encs) ASN__ENCODE_FAILED; - cb = SET_OF_encode_xer_callback; - } - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(encs) { - memset(&encs[encs_count], 0, sizeof(encs[0])); - app_key = &encs[encs_count]; - encs_count++; - } - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - if(!xcan && specs->as_XMLValueList == 1) - ASN__TEXT_INDENT(1, ilevel + 1); - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + (specs->as_XMLValueList != 2), - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - if(encs) { - xer_tmp_enc_t *enc = encs; - xer_tmp_enc_t *end = encs + encs_count; - ssize_t control_size = 0; - - er.encoded = 0; - cb = original_cb; - app_key = original_app_key; - qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); - - for(; enc < end; enc++) { - ASN__CALLBACK(enc->buffer, enc->offset); - FREEMEM(enc->buffer); - enc->buffer = 0; - control_size += enc->offset; - } - assert(control_size == er.encoded); - } - - goto cleanup; -cb_failed: - ASN__ENCODE_FAILED; -cleanup: - if(encs) { - size_t n; - for(n = 0; n < encs_count; n++) { - FREEMEM(encs[n].buffer); - } - FREEMEM(encs); - } - ASN__ENCODED_OK(er); -} - -int -SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int ret; - int i; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - _i_INDENT(1); - - ret = elm->type->op->print_struct(elm->type, memb_ptr, - ilevel + 1, cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - const asn_SET_OF_specifics_t *specs; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - asn_struct_ctx_t *ctx; /* Decoder context */ - int i; - - /* - * Could not use set_of_empty() because of (*free) - * incompatibility. - */ - for(i = 0; i < list->count; i++) { - void *memb_ptr = list->array[i]; - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } - list->count = 0; /* No meaningful elements left */ - - asn_set_empty(list); /* Remove (list->array) */ - - specs = (const asn_SET_OF_specifics_t *)td->specifics; - ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); - if(ctx->ptr) { - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } - } -} - -int -SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - asn_constr_check_f *constr; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int i; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - constr = elm->encoding_constraints.general_constraints; - if(!constr) constr = elm->type->encoding_constraints.general_constraints; - - /* - * Iterate over the members of an array. - * Validate each in turn, until one fails. - */ - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - int ret; - - if(!memb_ptr) continue; - - ret = constr(elm->type, memb_ptr, ctfailcb, app_key); - if(ret) return ret; - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = per_get_few_bits(pd, ct->effective_bits); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = uper_get_length(pd, -1, 0, &repeat); - ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", - nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) { - if(rv.consumed == 0 && nelems > 200) { - /* Protect from SET OF NULL compression bombs. */ - ASN__DECODE_FAILED; - } - continue; - } - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -asn_enc_rval_t -SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - const asn_TYPE_member_t *elm = td->elements; - struct _el_buffer *encoded_els; - asn_enc_rval_t er = {0,0,0}; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - - list = _A_CSET_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - - /* - * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - const struct _el_buffer *el = &encoded_els[edx]; - if(asn_put_many_bits(po, el->buf, - (8 * el->length) - el->bits_unused) < 0) { - break; - } - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if((ssize_t)encoded_edx == list->count) { - ASN__ENCODED_OK(er); - } else { - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, - ct ? ct->effective_bits : -1, &repeat); - ASN_DEBUG("Got to decode %d elements (eff %d)", - (int)nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) - continue; - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -struct comparable_ptr { - const asn_TYPE_descriptor_t *td; - const void *sptr; -}; - -static int -SET_OF__compare_cb(const void *aptr, const void *bptr) { - const struct comparable_ptr *a = aptr; - const struct comparable_ptr *b = bptr; - assert(a->td == b->td); - return a->td->op->compare_struct(a->td, a->sptr, b->sptr); -} - -int -SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); - const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); - - if(a && b) { - struct comparable_ptr *asorted; - struct comparable_ptr *bsorted; - ssize_t common_length; - ssize_t idx; - - if(a->count == 0) { - if(b->count) return -1; - return 0; - } else if(b->count == 0) { - return 1; - } - - asorted = MALLOC(a->count * sizeof(asorted[0])); - bsorted = MALLOC(b->count * sizeof(bsorted[0])); - if(!asorted || !bsorted) { - FREEMEM(asorted); - FREEMEM(bsorted); - return -1; - } - - for(idx = 0; idx < a->count; idx++) { - asorted[idx].td = td->elements->type; - asorted[idx].sptr = a->array[idx]; - } - - for(idx = 0; idx < b->count; idx++) { - bsorted[idx].td = td->elements->type; - bsorted[idx].sptr = b->array[idx]; - } - - qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); - qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); - - common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); - if(ret) { - FREEMEM(asorted); - FREEMEM(bsorted); - return ret; - } - } - - FREEMEM(asorted); - FREEMEM(bsorted); - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SET_OF = { - SET_OF_free, - SET_OF_print, - SET_OF_compare, - SET_OF_decode_ber, - SET_OF_encode_der, - SET_OF_decode_xer, - SET_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SET_OF_decode_oer, - SET_OF_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SET_OF_decode_uper, - SET_OF_encode_uper, - SET_OF_decode_aper, - 0, /* SET_OF_encode_aper */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - SET_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_SET_OF_specifics_t *specs = - (const asn_SET_OF_specifics_t *)td->specifics; - asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm = td->elements; - void *st = *sptr; - long max_elements = 5; - long slb = 0; /* Lower size bound */ - long sub = 0; /* Upper size bound */ - size_t rnd_len; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) { - return result_failed; - } - } - - switch(asn_random_between(0, 6)) { - case 0: max_elements = 0; break; - case 1: max_elements = 1; break; - case 2: max_elements = 5; break; - case 3: max_elements = max_length; break; - case 4: max_elements = max_length / 2; break; - case 5: max_elements = max_length / 4; break; - default: break; - } - sub = slb + max_elements; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_SEMI_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->lower_bound + max_elements; - } else if(pc->flags & APC_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->upper_bound; - if(sub - slb > max_elements) sub = slb + max_elements; - } - } - - /* Bias towards edges of allowed space */ - switch(asn_random_between(-1, 4)) { - default: - case -1: - /* Prepare lengths somewhat outside of constrained range. */ - if(constraints->per_constraints - && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { - switch(asn_random_between(0, 5)) { - default: - case 0: - rnd_len = 0; - break; - case 1: - if(slb > 0) { - rnd_len = slb - 1; - } else { - rnd_len = 0; - } - break; - case 2: - rnd_len = asn_random_between(0, slb); - break; - case 3: - if(sub < (ssize_t)max_length) { - rnd_len = sub + 1; - } else { - rnd_len = max_length; - } - break; - case 4: - if(sub < (ssize_t)max_length) { - rnd_len = asn_random_between(sub + 1, max_length); - } else { - rnd_len = max_length; - } - break; - case 5: - rnd_len = max_length; - break; - } - break; - } - /* Fall through */ - case 0: - rnd_len = asn_random_between(slb, sub); - break; - case 1: - if(slb < sub) { - rnd_len = asn_random_between(slb + 1, sub); - break; - } - /* Fall through */ - case 2: - rnd_len = asn_random_between(slb, slb); - break; - case 3: - if(slb < sub) { - rnd_len = asn_random_between(slb, sub - 1); - break; - } - /* Fall through */ - case 4: - rnd_len = asn_random_between(sub, sub); - break; - } - - for(; rnd_len > 0; rnd_len--) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - void *ptr = 0; - asn_random_fill_result_t tmpres = elm->type->op->random_fill( - elm->type, &ptr, &elm->encoding_constraints, - (max_length > res_ok.length ? max_length - res_ok.length : 0) - / rnd_len); - switch(tmpres.code) { - case ARFILL_OK: - ASN_SET_ADD(list, ptr); - res_ok.length += tmpres.length; - break; - case ARFILL_SKIPPED: - break; - case ARFILL_FAILED: - assert(ptr == 0); - return tmpres; - } - } - - return res_ok; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SET_OF.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SET_OF.h deleted file mode 100644 index 7681062..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_SET_OF.h +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef CONSTR_SET_OF_H -#define CONSTR_SET_OF_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct asn_SET_OF_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the target structure. */ - unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - /* XER-specific stuff */ - int as_XMLValueList; /* The member type must be encoded like this */ -} asn_SET_OF_specifics_t; - -/* - * A set specialized functions dealing with the SET OF type. - */ -asn_struct_free_f SET_OF_free; -asn_struct_print_f SET_OF_print; -asn_struct_compare_f SET_OF_compare; -asn_constr_check_f SET_OF_constraint; -ber_type_decoder_f SET_OF_decode_ber; -der_type_encoder_f SET_OF_encode_der; -xer_type_decoder_f SET_OF_decode_xer; -xer_type_encoder_f SET_OF_encode_xer; -oer_type_decoder_f SET_OF_decode_oer; -oer_type_encoder_f SET_OF_encode_oer; -per_type_decoder_f SET_OF_decode_uper; -per_type_encoder_f SET_OF_encode_uper; -per_type_decoder_f SET_OF_decode_aper; -per_type_encoder_f SET_OF_encode_aper; -asn_random_fill_f SET_OF_random_fill; -extern asn_TYPE_operation_t asn_OP_SET_OF; - -#ifdef __cplusplus -} -#endif - -#endif /* CONSTR_SET_OF_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_TYPE.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_TYPE.c deleted file mode 100644 index aefaefd..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_TYPE.c +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Version of the ASN.1 infrastructure shipped with compiler. - */ -int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } - -static asn_app_consume_bytes_f _print2fp; - -/* - * Return the outmost tag of the type. - */ -ber_tlv_tag_t -asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { - - if(tag_mode) - return tag; - - if(type_descriptor->tags_count) - return type_descriptor->tags[0]; - - return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); -} - -/* - * Print the target language's structure in human readable form. - */ -int -asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, - const void *struct_ptr) { - if(!stream) stream = stdout; - if(!td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - /* Invoke type-specific printer */ - if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { - return -1; - } - - /* Terminate the output */ - if(_print2fp("\n", 1, stream)) { - return -1; - } - - return fflush(stream); -} - -/* Dump the data into the specified stdio stream */ -static int -_print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - - -/* - * Some compilers do not support variable args macros. - * This function is a replacement of ASN_DEBUG() macro. - */ -void ASN_DEBUG_f(const char *fmt, ...); -void ASN_DEBUG_f(const char *fmt, ...) { - va_list ap; - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_TYPE.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_TYPE.h deleted file mode 100644 index d80dea5..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constr_TYPE.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This file contains the declaration structure called "ASN.1 Type Definition", - * which holds all information necessary for encoding and decoding routines. - * This structure even contains pointer to these encoding and decoding routines - * for each defined ASN.1 type. - */ -#ifndef _CONSTR_TYPE_H_ -#define _CONSTR_TYPE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ -struct asn_TYPE_member_s; /* Forward declaration */ - -/* - * This type provides the context information for various ASN.1 routines, - * primarily ones doing decoding. A member _asn_ctx of this type must be - * included into certain target language's structures, such as compound types. - */ -typedef struct asn_struct_ctx_s { - short phase; /* Decoding phase */ - short step; /* Elementary step of a phase */ - int context; /* Other context information */ - void *ptr; /* Decoder-specific stuff (stack elements) */ - ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ -} asn_struct_ctx_t; - -#include /* Basic Encoding Rules decoder */ -#include /* Distinguished Encoding Rules encoder */ -#include /* Decoder of XER (XML, text) */ -#include /* Encoder into XER (XML, text) */ -#include /* Packet Encoding Rules decoder */ -#include /* Packet Encoding Rules encoder */ -#include /* Subtype constraints support */ -#include /* Random structures support */ - -#ifdef ASN_DISABLE_OER_SUPPORT -typedef void (oer_type_decoder_f)(void); -typedef void (oer_type_encoder_f)(void); -typedef void asn_oer_constraints_t; -#else -#include /* Octet Encoding Rules encoder */ -#include /* Octet Encoding Rules encoder */ -#endif - -/* - * Free the structure according to its specification. - * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. - * Do not use directly. - */ -enum asn_struct_free_method { - ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ - ASFM_FREE_UNDERLYING, /* free underlying members */ - ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ -}; -typedef void (asn_struct_free_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, enum asn_struct_free_method); - -/* - * Free the structure including freeing the memory pointed to by ptr itself. - */ -#define ASN_STRUCT_FREE(asn_DEF, ptr) \ - (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) - -/* - * Free the memory used by the members of the structure without freeing the - * the structure pointer itself. - * ZERO-OUT the structure to the safe clean state. - * (Retaining the pointer may be useful in case the structure is allocated - * statically or arranged on the stack, yet its elements are dynamic.) - */ -#define ASN_STRUCT_RESET(asn_DEF, ptr) \ - (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) - -/* - * Free memory used by the members of the structure without freeing - * the structure pointer itself. - * (Retaining the pointer may be useful in case the structure is allocated - * statically or arranged on the stack, yet its elements are dynamic.) - * AVOID using it in the application code; - * Use a safer ASN_STRUCT_RESET() instead. - */ -#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ - (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) - -/* - * Print the structure according to its specification. - */ -typedef int(asn_struct_print_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, - int level, /* Indentation level */ - asn_app_consume_bytes_f *callback, void *app_key); - -/* - * Compare two structs between each other. - * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", - * and =0 if "equal to", for some type-specific, stable definition of - * "smaller", "greater" and "equal to". - */ -typedef int (asn_struct_compare_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_A, - const void *struct_B); - -/* - * Return the outmost tag of the type. - * If the type is untagged CHOICE, the dynamic operation is performed. - * NOTE: This function pointer type is only useful internally. - * Do not use it in your application. - */ -typedef ber_tlv_tag_t (asn_outmost_tag_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); -/* The instance of the above function type; used internally. */ -asn_outmost_tag_f asn_TYPE_outmost_tag; - -/* - * Fetch the desired type of the Open Type based on the - * Information Object Set driven constraints. - */ -typedef struct asn_type_selector_result_s { - const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ - unsigned presence_index; /* Associated choice variant. */ -} asn_type_selector_result_t; -typedef asn_type_selector_result_t(asn_type_selector_f)( - const struct asn_TYPE_descriptor_s *parent_type_descriptor, - const void *parent_structure_ptr); - -/* - * Generalized functions for dealing with the speciic type. - * May be directly invoked by applications. - */ -typedef struct asn_TYPE_operation_s { - asn_struct_free_f *free_struct; /* Free the structure */ - asn_struct_print_f *print_struct; /* Human readable output */ - asn_struct_compare_f *compare_struct; /* Compare two structures */ - ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ - der_type_encoder_f *der_encoder; /* Canonical DER encoder */ - xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ - xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ - oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ - oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ - per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ - per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ - per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ - per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ - asn_random_fill_f *random_fill; /* Initialize with a random value */ - asn_outmost_tag_f *outmost_tag; /* */ -} asn_TYPE_operation_t; - -/* - * A constraints tuple specifying both the OER and PER constraints. - */ -typedef struct asn_encoding_constraints_s { - const struct asn_oer_constraints_s *oer_constraints; - const struct asn_per_constraints_s *per_constraints; - asn_constr_check_f *general_constraints; -} asn_encoding_constraints_t; - -/* - * The definitive description of the destination language's structure. - */ -typedef struct asn_TYPE_descriptor_s { - const char *name; /* A name of the ASN.1 type. "" in some cases. */ - const char *xml_tag; /* Name used in XML tag */ - - /* - * Generalized functions for dealing with the specific type. - * May be directly invoked by applications. - */ - asn_TYPE_operation_t *op; - - /*********************************************************************** - * Internally useful members. Not to be used by applications directly. * - **********************************************************************/ - - /* - * Tags that are expected to occur. - */ - const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ - unsigned tags_count; /* Number of tags which are expected */ - const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ - unsigned all_tags_count; /* Number of tags */ - - /* OER, PER, and general constraints */ - asn_encoding_constraints_t encoding_constraints; - - /* - * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). - */ - struct asn_TYPE_member_s *elements; - unsigned elements_count; - - /* - * Additional information describing the type, used by appropriate - * functions above. - */ - const void *specifics; -} asn_TYPE_descriptor_t; - -/* - * This type describes an element of the constructed type, - * i.e. SEQUENCE, SET, CHOICE, etc. - */ - enum asn_TYPE_flags_e { - ATF_NOFLAGS, - ATF_POINTER = 0x01, /* Represented by the pointer */ - ATF_OPEN_TYPE = 0x02, /* Open Type */ - ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ - }; -typedef struct asn_TYPE_member_s { - enum asn_TYPE_flags_e flags; /* Element's presentation flags */ - unsigned optional; /* Following optional members, including current */ - unsigned memb_offset; /* Offset of the element */ - ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ - int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ - asn_TYPE_descriptor_t *type; /* Member type descriptor */ - asn_type_selector_f *type_selector; /* IoS runtime type selector */ - asn_encoding_constraints_t encoding_constraints; - int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ - int (*default_value_set)(void **sptr); /* Set DEFAULT */ - const char *name; /* ASN.1 identifier of the element */ -} asn_TYPE_member_t; - -/* - * BER tag to element number mapping. - */ -typedef struct asn_TYPE_tag2member_s { - ber_tlv_tag_t el_tag; /* Outmost tag of the member */ - unsigned el_no; /* Index of the associated member, base 0 */ - int toff_first; /* First occurence of the el_tag, relative */ - int toff_last; /* Last occurence of the el_tag, relative */ -} asn_TYPE_tag2member_t; - -/* - * This function prints out the contents of the target language's structure - * (struct_ptr) into the file pointer (stream) in human readable form. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem dumping the structure. - * (See also xer_fprint() in xer_encoder.h) - */ -int asn_fprint(FILE *stream, /* Destination stream descriptor */ - const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ - const void *struct_ptr); /* Structure to be printed */ - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_TYPE_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constraints.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/constraints.c deleted file mode 100644 index df3c6c1..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constraints.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include - -int -asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Nothing to check */ - return 0; -} - -int -asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Unknown how to check */ - return 0; -} - -struct errbufDesc { - const asn_TYPE_descriptor_t *failed_type; - const void *failed_struct_ptr; - char *errbuf; - size_t errlen; -}; - -static void -_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, - const char *fmt, ...) { - struct errbufDesc *arg = key; - va_list ap; - ssize_t vlen; - ssize_t maxlen; - - arg->failed_type = td; - arg->failed_struct_ptr = sptr; - - maxlen = arg->errlen; - if(maxlen <= 0) - return; - - va_start(ap, fmt); - vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); - va_end(ap); - if(vlen >= maxlen) { - arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ - arg->errlen = maxlen - 1; /* Not counting termination */ - return; - } else if(vlen >= 0) { - arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ - arg->errlen = vlen; /* Not counting termination */ - } else { - /* - * The libc on this system is broken. - */ - vlen = sizeof("") - 1; - maxlen--; - arg->errlen = vlen < maxlen ? vlen : maxlen; - memcpy(arg->errbuf, "", arg->errlen); - arg->errbuf[arg->errlen] = 0; - } - - return; -} - -int -asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, char *errbuf, size_t *errlen) { - struct errbufDesc arg; - int ret; - - arg.failed_type = 0; - arg.failed_struct_ptr = 0; - arg.errbuf = errbuf; - arg.errlen = errlen ? *errlen : 0; - - ret = type_descriptor->encoding_constraints.general_constraints( - type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); - if(ret == -1 && errlen) *errlen = arg.errlen; - - return ret; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/constraints.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/constraints.h deleted file mode 100644 index 0bd86a9..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/constraints.h +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN1_CONSTRAINTS_VALIDATOR_H -#define ASN1_CONSTRAINTS_VALIDATOR_H - -#include /* Platform-dependent types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Validate the structure according to the ASN.1 constraints. - * If errbuf and errlen are given, they shall be pointing to the appropriate - * buffer space and its length before calling this function. Alternatively, - * they could be passed as NULL's. If constraints validation fails, - * errlen will contain the actual number of bytes taken from the errbuf - * to encode an error message (properly 0-terminated). - * - * RETURN VALUES: - * This function returns 0 in case all ASN.1 constraints are met - * and -1 if one or more constraints were failed. - */ -int asn_check_constraints( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Target language's structure */ - char *errbuf, /* Returned error description */ - size_t *errlen /* Length of the error description */ -); - - -/* - * Generic type for constraint checking callback, - * associated with every type descriptor. - */ -typedef int(asn_constr_check_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, - asn_app_constraint_failed_f *optional_callback, /* Log the error */ - void *optional_app_key /* Opaque key passed to a callback */ -); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ -asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ - -/* - * Invoke the callback with a complete error message. - */ -#define ASN__CTFAIL if(ctfailcb) ctfailcb - -#ifdef __cplusplus -} -#endif - -#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/der_encoder.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/der_encoder.c deleted file mode 100644 index 2c6a6f7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/der_encoder.c +++ /dev/null @@ -1,194 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, int constructed); - -/* - * The DER encoder of any type. - */ -asn_enc_rval_t -der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - ASN_DEBUG("DER encoder invoked for %s", - type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->op->der_encoder( - type_descriptor, struct_ptr, /* Pointer to the destination structure */ - 0, 0, consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for der_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the der_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - ec = type_descriptor->op->der_encoder(type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - 0, 0, encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - return ec; -} - - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t -der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, - int tag_mode, int last_tag_form, - ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ - asn_app_consume_bytes_f *cb, void *app_key) { -#define ASN1_DER_MAX_TAGS_COUNT 4 - ber_tlv_tag_t - tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; - ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; - const ber_tlv_tag_t *tags; /* Copy of tags stream */ - int tags_count; /* Number of tags */ - size_t overall_length; - int i; - - ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", - sd->name, tag_mode, sd->tags_count, - ber_tlv_tag_string(tag), - tag_mode - ?(sd->tags_count+1 - -((tag_mode == -1) && sd->tags_count)) - :sd->tags_count - ); - - if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { - ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); - return -1; - } - - if(tag_mode) { - /* - * Instead of doing shaman dance like we do in ber_check_tags(), - * allocate a small array on the stack - * and initialize it appropriately. - */ - int stag_offset; - ber_tlv_tag_t *tags_buf = tags_buf_scratch; - tags_count = sd->tags_count - + 1 /* EXPLICIT or IMPLICIT tag is given */ - - ((tag_mode == -1) && sd->tags_count); - /* Copy tags over */ - tags_buf[0] = tag; - stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); - for(i = 1; i < tags_count; i++) - tags_buf[i] = sd->tags[i + stag_offset]; - tags = tags_buf; - } else { - tags = sd->tags; - tags_count = sd->tags_count; - } - - /* No tags to write */ - if(tags_count == 0) - return 0; - - /* - * Array of tags is initialized. - * Now, compute the size of the TLV pairs, from right to left. - */ - overall_length = struct_length; - for(i = tags_count - 1; i >= 0; --i) { - lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); - if(lens[i] == -1) return -1; - overall_length += lens[i]; - lens[i] = overall_length - lens[i]; - } - - if(!cb) return overall_length - struct_length; - - ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, - tags_count); - - /* - * Encode the TL sequence for real. - */ - for(i = 0; i < tags_count; i++) { - ssize_t len; - int _constr; - - /* Check if this tag happens to be constructed */ - _constr = (last_tag_form || i < (tags_count - 1)); - - len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); - if(len == -1) return -1; - } - - return overall_length - struct_length; -} - -static ssize_t -der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, - int constructed) { - uint8_t buf[32]; - size_t size = 0; - int buf_size = cb?sizeof(buf):0; - ssize_t tmp; - - /* Serialize tag (T from TLV) into possibly zero-length buffer */ - tmp = ber_tlv_tag_serialize(tag, buf, buf_size); - if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; - size += tmp; - - /* Serialize length (L from TLV) into possibly zero-length buffer */ - tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); - if(tmp == -1) return -1; - size += tmp; - - if(size > sizeof(buf)) - return -1; - - /* - * If callback is specified, invoke it, and check its return value. - */ - if(cb) { - if(constructed) *buf |= 0x20; - if(cb(buf, size, app_key) < 0) - return -1; - } - - return size; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/der_encoder.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/der_encoder.h deleted file mode 100644 index e93944e..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/der_encoder.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _DER_ENCODER_H_ -#define _DER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The DER encoder of any type. May be invoked by the application. - * Produces DER- and BER-compliant encoding. (DER is a subset of BER). - * - * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data - * produced by der_encode(). - */ -asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* A variant of der_encode() which encodes data into the pre-allocated buffer */ -asn_enc_rval_t der_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -); - -/* - * Type of the generic DER encoder. - */ -typedef asn_enc_rval_t(der_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, - size_t struct_length, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {0,!0}: prim, constructed */ - ber_tlv_tag_t tag, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _DER_ENCODER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_decoder.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_decoder.c deleted file mode 100644 index 8a3e39d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_decoder.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -/* - * Decode a "Production of a complete encoding", X.691#10.1. - * The complete encoding contains at least one byte, and is an integral - * multiple of 8 bytes. - */ -asn_dec_rval_t -uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -uper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->uper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %ld, counted %ld", - (long)rval.consumed, (long)pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - -asn_dec_rval_t -aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -aper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->aper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %zu, counted %zu", - rval.consumed, pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_decoder.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_decoder.h deleted file mode 100644 index eea474a..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_decoder.h +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_DECODER_H_ -#define _PER_DECODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. - * On success, this call always returns (.consumed >= 1), as per #11.1.3. - */ -asn_dec_rval_t uper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t uper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of the input data buffer, in bytes */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ -); - -/* - * Aligned PER decoder of a "complete encoding" as per X.691#10.1. - * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. - */ -asn_dec_rval_t aper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - -/* - * Aligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t aper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of data buffer */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ - ); - -/* - * Type of the type-specific PER decoder function. - */ -typedef asn_dec_rval_t(per_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, void **struct_ptr, - asn_per_data_t *per_data); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_DECODER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_encoder.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_encoder.c deleted file mode 100644 index a35e1f0..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_encoder.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include - -static int _uper_encode_flush_outp(asn_per_outp_t *po); - -static int -ignore_output(const void *data, size_t size, void *app_key) { - (void)data; - (void)size; - (void)app_key; - return 0; -} - -asn_enc_rval_t -uper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->uper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb ? cb : ignore_output; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->uper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; - } - - return er; -} - -/* - * Argument type and callback necessary for uper_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -asn_enc_rval_t -uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); - - return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -typedef struct enc_dyn_arg { - void *buffer; - size_t length; - size_t allocated; -} enc_dyn_arg; -static int -encode_dyn_cb(const void *buffer, size_t size, void *key) { - enc_dyn_arg *arg = key; - if(arg->length + size >= arg->allocated) { - size_t new_size = arg->allocated ? arg->allocated : 8; - void *p; - - do { - new_size <<= 2; - } while(arg->length + size >= new_size); - - p = REALLOC(arg->buffer, new_size); - if(!p) { - FREEMEM(arg->buffer); - memset(arg, 0, sizeof(*arg)); - return -1; - } - arg->buffer = p; - arg->allocated = new_size; - } - memcpy(((char *)arg->buffer) + arg->length, buffer, size); - arg->length += size; - return 0; -} -ssize_t -uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -/* - * Internally useful functions. - */ - -/* Flush partially filled buffer */ -static int -_uper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); -} - -asn_enc_rval_t -aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); - - return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -ssize_t -aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -static int -_aper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - if (po->output) { - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); - } - return 0; -} - -asn_enc_rval_t -aper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->aper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->aper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_aper_encode_flush_outp(&po)) - ASN__ENCODE_FAILED; - } - - return er; -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_encoder.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_encoder.h deleted file mode 100644 index b615ef0..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_encoder.h +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_ENCODER_H_ -#define _PER_ENCODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. Use the following formula to convert to bytes: - * bytes = ((.encoded + 7) / 8) - */ -asn_enc_rval_t uper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -asn_enc_rval_t aper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * A variant of uper_encode() which encodes data into the existing buffer - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. - */ -asn_enc_rval_t uper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); - -asn_enc_rval_t aper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); -/* - * A variant of uper_encode_to_buffer() which allocates buffer itself. - * Returns the number of bytes in the buffer or -1 in case of failure. - * WARNING: This function produces a "Production of the complete encoding", - * with length of at least one octet. Contrast this to precise bit-packing - * encoding of uper_encode() and uper_encode_to_buffer(). - */ -ssize_t uper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void **buffer_r /* Buffer allocated and returned */ -); - -ssize_t -aper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *td, - const asn_per_constraints_t *constraints, - const void *sptr, - void **buffer_r -); - -/* - * Type of the generic PER encoder function. - */ -typedef asn_enc_rval_t(per_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_ENCODER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_opentype.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_opentype.c deleted file mode 100644 index 28f3cb6..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_opentype.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -typedef struct uper_ugot_key { - asn_per_data_t oldpd; /* Old per data source */ - size_t unclaimed; - size_t ot_moved; /* Number of bits moved by OT processing */ - int repeat; -} uper_ugot_key; - -static int uper_ugot_refill(asn_per_data_t *pd); -static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -/* - * Encode an "open type field". - * #10.1, #10.2 - */ -int -uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, - size); - - bptr = buf; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE - " to %s and allowing to save %" ASN_PRI_SSIZE, - size, td->name, may_save); - if(may_save < 0) break; - if(per_put_many_bits(po, bptr, may_save * 8)) break; - bptr = (char *)bptr + may_save; - size -= may_save; - if(need_eom && uper_put_length(po, 0, 0)) { - FREEMEM(buf); - return -1; - } - } while(size); - - FREEMEM(buf); - if(size) return -1; - - return 0; -} - -static asn_dec_rval_t -uper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = uper_get_length(pd, -1, 0, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -static asn_dec_rval_t CC_NOTUSED -uper_open_type_get_complex(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - uper_ugot_key arg; - asn_dec_rval_t rv; - ssize_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s from %s", td->name, - asn_bit_data_string(pd)); - arg.oldpd = *pd; - arg.unclaimed = 0; - arg.ot_moved = 0; - arg.repeat = 1; - pd->refill = uper_ugot_refill; - pd->refill_key = &arg; - pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ - pd->moved = 0; /* This now counts the open type size in bits */ - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); - ASN_DEBUG_INDENT_ADD(-4); - -#define UPDRESTOREPD do { \ - /* buffer and nboff are valid, preserve them. */ \ - pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ - pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ - pd->refill = arg.oldpd.refill; \ - pd->refill_key = arg.oldpd.refill_key; \ - } while(0) - - if(rv.code != RC_OK) { - UPDRESTOREPD; - return rv; - } - - ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, - asn_bit_data_string(pd), - asn_bit_data_string(&arg.oldpd), - (int)arg.unclaimed, (int)arg.repeat); - - padding = pd->moved % 8; - if(padding) { - int32_t pvalue; - if(padding > 7) { - ASN_DEBUG("Too large padding %d in open type", - (int)padding); - rv.code = RC_FAIL; - UPDRESTOREPD; - return rv; - } - padding = 8 - padding; - ASN_DEBUG("Getting padding of %d bits", (int)padding); - pvalue = per_get_few_bits(pd, padding); - switch(pvalue) { - case -1: - ASN_DEBUG("Padding skip failed"); - UPDRESTOREPD; - ASN__DECODE_STARVED; - case 0: break; - default: - ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", - (int)padding, (int)pvalue); - UPDRESTOREPD; - ASN__DECODE_FAILED; - } - } - if(pd->nboff != pd->nbits) { - ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, - asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); - if(1) { - UPDRESTOREPD; - ASN__DECODE_FAILED; - } else { - arg.unclaimed += pd->nbits - pd->nboff; - } - } - - /* Adjust pd back so it points to original data */ - UPDRESTOREPD; - - /* Skip data not consumed by the decoder */ - if(arg.unclaimed) { - ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); - switch(per_skip_bits(pd, arg.unclaimed)) { - case -1: - ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); - ASN__DECODE_STARVED; - case 0: - ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); - break; - default: - /* Padding must be blank */ - ASN_DEBUG("Non-blank unconsumed padding"); - ASN__DECODE_FAILED; - } - arg.unclaimed = 0; - } - - if(arg.repeat) { - ASN_DEBUG("Not consumed the whole thing"); - rv.code = RC_FAIL; - return rv; - } - - return rv; -} - - -asn_dec_rval_t -uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_TYPE_operation_t s_op; - asn_dec_rval_t rv; - - s_td.name = ""; - s_td.op = &s_op; - s_op.uper_decoder = uper_sot_suck; - - rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - -/* - * Internal functions. - */ - -static asn_dec_rval_t -uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - - (void)ctx; - (void)td; - (void)constraints; - (void)sptr; - - while(per_get_few_bits(pd, 1) >= 0); - - rv.code = RC_OK; - rv.consumed = pd->moved; - - return rv; -} - -static int -uper_ugot_refill(asn_per_data_t *pd) { - uper_ugot_key *arg = pd->refill_key; - ssize_t next_chunk_bytes, next_chunk_bits; - ssize_t avail; - - asn_per_data_t *oldpd = &arg->oldpd; - - ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", - (long)pd->moved, (long)oldpd->moved); - - /* Advance our position to where pd is */ - oldpd->buffer = pd->buffer; - oldpd->nboff = pd->nboff; - oldpd->nbits -= pd->moved - arg->ot_moved; - oldpd->moved += pd->moved - arg->ot_moved; - arg->ot_moved = pd->moved; - - if(arg->unclaimed) { - /* Refill the container */ - if(per_get_few_bits(oldpd, 1)) - return -1; - if(oldpd->nboff == 0) { - assert(0); - return -1; - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff - 1; - pd->nbits = oldpd->nbits; - ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", - (long)pd->moved); - return 0; - } - - if(!arg->repeat) { - ASN_DEBUG("Want more but refill doesn't have it"); - return -1; - } - - next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); - ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", - (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); - if(next_chunk_bytes < 0) return -1; - if(next_chunk_bytes == 0) { - pd->refill = 0; /* No more refills, naturally */ - assert(!arg->repeat); /* Implementation guarantee */ - } - next_chunk_bits = next_chunk_bytes << 3; - avail = oldpd->nbits - oldpd->nboff; - if(avail >= next_chunk_bits) { - pd->nbits = oldpd->nboff + next_chunk_bits; - arg->unclaimed = 0; - ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", - (long)next_chunk_bits, (long)oldpd->moved, - (long)oldpd->nboff, (long)oldpd->nbits, - (long)(oldpd->nbits - oldpd->nboff)); - } else { - pd->nbits = oldpd->nbits; - arg->unclaimed = next_chunk_bits - avail; - ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", - (long)avail, (long)next_chunk_bits, - (long)arg->unclaimed); - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff; - ASN_DEBUG("Refilled pd%s old%s", - asn_bit_data_string(pd), asn_bit_data_string(oldpd)); - return 0; -} - -static int -per_skip_bits(asn_per_data_t *pd, int skip_nbits) { - int hasNonZeroBits = 0; - while(skip_nbits > 0) { - int skip; - - /* per_get_few_bits() is more efficient when nbits <= 24 */ - if(skip_nbits < 24) - skip = skip_nbits; - else - skip = 24; - skip_nbits -= skip; - - switch(per_get_few_bits(pd, skip)) { - case -1: return -1; /* Starving */ - case 0: continue; /* Skipped empty space */ - default: hasNonZeroBits = 1; continue; - } - } - return hasNonZeroBits; -} - -static asn_dec_rval_t -aper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = aper_get_length(pd, -1, -1, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -int -aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - size_t toGo; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - for(bptr = buf, toGo = size; toGo;) { - ssize_t maySave = aper_put_length(po, -1, toGo); - if(maySave < 0) break; - if(per_put_many_bits(po, bptr, maySave * 8)) break; - bptr = (char *)bptr + maySave; - toGo -= maySave; - } - - FREEMEM(buf); - if(toGo) return -1; - - ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", - td->name, size); - - return 0; -} - -asn_dec_rval_t -aper_open_type_get(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_dec_rval_t rv; - asn_TYPE_operation_t op_t; - - memset(&op_t, 0, sizeof(op_t)); - s_td.name = ""; - s_td.op = &op_t; - s_td.op->aper_decoder = uper_sot_suck; - - rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_opentype.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_opentype.h deleted file mode 100644 index 1493b2d..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_opentype.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_OPENTYPE_H_ -#define _PER_OPENTYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, - asn_per_data_t *pd); - -/* - * X.691 (2015/08), #11.2 - * Returns -1 if error is encountered. 0 if all OK. - */ -int uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - - -int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); - -int aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_OPENTYPE_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_support.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_support.c deleted file mode 100644 index 2285677..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_support.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * X.691-201508 #10.9 General rules for encoding a length determinant. - * Get the optionally constrained length "n" from the stream. - */ -ssize_t -uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, - int *repeat) { - ssize_t value; - - *repeat = 0; - - /* #11.9.4.1 Encoding if constrained (according to effective bits) */ - if(ebits >= 0 && ebits <= 16) { - value = per_get_few_bits(pd, ebits); - if(value >= 0) value += lower_bound; - return value; - } - - value = per_get_few_bits(pd, 8); - if((value & 0x80) == 0) { /* #11.9.3.6 */ - return (value & 0x7F); - } else if((value & 0x40) == 0) { /* #11.9.3.7 */ - /* bit 8 ... set to 1 and bit 7 ... set to zero */ - value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); - return value; /* potential -1 from per_get_few_bits passes through. */ - } else if(value < 0) { - ASN_DEBUG("END of stream reached for PER"); - return -1; - } - value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ - if(value < 1 || value > 4) { - return -1; /* Prohibited by #11.9.3.8 */ - } - *repeat = 1; - return (16384 * value); -} - -/* - * Get the normally small length "n". - * This procedure used to decode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -ssize_t -uper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%d", (int)length); - return length; - } else { - int repeat; - length = uper_get_length(pd, -1, 0, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -/* - * Get the normally small non-negative whole number. - * X.691, #10.6 - */ -ssize_t -uper_get_nsnnwn(asn_per_data_t *pd) { - ssize_t value; - - value = per_get_few_bits(pd, 7); - if(value & 64) { /* implicit (value < 0) */ - value &= 63; - value <<= 2; - value |= per_get_few_bits(pd, 2); - if(value & 128) /* implicit (value < 0) */ - return -1; - if(value == 0) - return 0; - if(value >= 3) - return -1; - value = per_get_few_bits(pd, 8 * value); - return value; - } - - return value; -} - -/* - * X.691-11/2008, #11.6 - * Encoding of a normally small non-negative whole number - */ -int -uper_put_nsnnwn(asn_per_outp_t *po, int n) { - int bytes; - - if(n <= 63) { - if(n < 0) return -1; - return per_put_few_bits(po, n, 7); - } - if(n < 256) - bytes = 1; - else if(n < 65536) - bytes = 2; - else if(n < 256 * 65536) - bytes = 3; - else - return -1; /* This is not a "normally small" value */ - if(per_put_few_bits(po, bytes, 8)) - return -1; - - return per_put_few_bits(po, n, 8 * bytes); -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { - unsigned long lhalf; /* Lower half of the number*/ - long half; - - if(nbits <= 31) { - half = per_get_few_bits(pd, nbits); - if(half < 0) return -1; - *out_value = half; - return 0; - } - - if((size_t)nbits > 8 * sizeof(*out_value)) - return -1; /* RANGE */ - - half = per_get_few_bits(pd, 31); - if(half < 0) return -1; - - if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) - return -1; - - *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; - return 0; -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int -uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, - int nbits) { - if(nbits <= 31) { - return per_put_few_bits(po, v, nbits); - } else { - /* Put higher portion first, followed by lower 31-bit */ - if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) - return -1; - return per_put_few_bits(po, v, 31); - } -} - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "n" (or part of it) into the stream. - */ -ssize_t -uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { - int dummy = 0; - if(!need_eom) need_eom = &dummy; - - if(length <= 127) { /* #11.9.3.6 */ - *need_eom = 0; - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } else if(length < 16384) { /* #10.9.3.7 */ - *need_eom = 0; - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - } - - *need_eom = 0 == (length & 16383); - length >>= 14; - if(length > 4) { - *need_eom = 0; - length = 4; - } - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); - -} - - -/* - * Put the normally small length "n" into the stream. - * This procedure used to encode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -int -uper_put_nslength(asn_per_outp_t *po, size_t length) { - if(length <= 64) { - /* #11.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length - 1, 7) ? -1 : 0; - } else { - int need_eom = 0; - if(uper_put_length(po, length, &need_eom) != (ssize_t)length - || need_eom) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -static int -per__long_range(long lb, long ub, unsigned long *range_r) { - unsigned long bounds_range; - if((ub < 0) == (lb < 0)) { - bounds_range = ub - lb; - } else if(lb < 0) { - assert(ub >= 0); - bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); - } else { - assert(!"Unreachable"); - return -1; - } - *range_r = bounds_range; - return 0; -} - -int -per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { - unsigned long range; - - assert(lb <= ub); - - if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { - /* Range error. */ - return -1; - } - - /* - * Fundamentally what we're doing is returning (v-lb). - * However, this triggers undefined behavior when the word width - * of signed (v) is the same as the size of unsigned (*output). - * In practice, it triggers the UndefinedSanitizer. Therefore we shall - * compute the ranges accurately to avoid C's undefined behavior. - */ - if((v < 0) == (lb < 0)) { - *output = v-lb; - return 0; - } else if(v < 0) { - unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else if(lb < 0) { - unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else { - assert(!"Unreachable"); - return -1; - } -} - -int -per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { - unsigned long range; - - if(per__long_range(lb, ub, &range) != 0) { - return -1; - } - - if(inp > range) { - /* - * We can encode something in the given number of bits that technically - * exceeds the range. This is an avenue for security errors, - * so we don't allow that. - */ - return -1; - } - - if(inp <= LONG_MAX) { - *outp = (long)inp + lb; - } else { - *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); - } - - return 0; -} - -int32_t -aper_get_align(asn_per_data_t *pd) { - - if(pd->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); - return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); - } - return 0; -} - -ssize_t -aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { - ssize_t value; - - *repeat = 0; - - if (range <= 65536 && range >= 0) - return aper_get_nsnnwn(pd, range); - - if (aper_get_align(pd) < 0) - return -1; - - if(ebits >= 0) return per_get_few_bits(pd, ebits); - - value = per_get_few_bits(pd, 8); - if(value < 0) return -1; - if((value & 128) == 0) /* #10.9.3.6 */ - return (value & 0x7F); - if((value & 64) == 0) { /* #10.9.3.7 */ - value = ((value & 63) << 8) | per_get_few_bits(pd, 8); - if(value < 0) return -1; - return value; - } - value &= 63; /* this is "m" from X.691, #10.9.3.8 */ - if(value < 1 || value > 4) - return -1; - *repeat = 1; - return (16384 * value); -} - -ssize_t -aper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%ld", length); - return length; - } else { - int repeat; - length = aper_get_length(pd, -1, -1, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -ssize_t -aper_get_nsnnwn(asn_per_data_t *pd, int range) { - ssize_t value; - int bytes = 0; - - ASN_DEBUG("getting nsnnwn with range %d", range); - - if(range <= 255) { - int i; - - if (range < 0) return -1; - /* 1 -> 8 bits */ - for (i = 1; i <= 8; i++) { - int upper = 1 << i; - if (upper >= range) - break; - } - value = per_get_few_bits(pd, i); - return value; - } else if (range == 256){ - /* 1 byte */ - bytes = 1; - } else if (range <= 65536) { - /* 2 bytes */ - bytes = 2; - } else { - return -1; - } - if (aper_get_align(pd) < 0) - return -1; - value = per_get_few_bits(pd, 8 * bytes); - return value; -} - -int aper_put_align(asn_per_outp_t *po) { - - if(po->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); - if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) - return -1; - } - return 0; -} - -ssize_t -aper_put_length(asn_per_outp_t *po, int range, size_t length) { - - ASN_DEBUG("APER put length %zu with range %d", length, range); - - /* 10.9 X.691 Note 2 */ - if (range <= 65536 && range >= 0) - return aper_put_nsnnwn(po, range, length); - - if (aper_put_align(po) < 0) - return -1; - - if(length <= 127) /* #10.9.3.6 */{ - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } - else if(length < 16384) /* #10.9.3.7 */ - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - - length >>= 14; - if(length > 4) length = 4; - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); -} - - -int -aper_put_nslength(asn_per_outp_t *po, size_t length) { - - if(length <= 64) { - /* #10.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length-1, 7) ? -1 : 0; - } else { - if(aper_put_length(po, -1, length) != (ssize_t)length) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -int -aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { - int bytes; - - ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); - /* 10.5.7.1 X.691 */ - if(range < 0) { - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (number <= bits) - break; - } - bytes = i; - assert(i <= 4); - } - if(range <= 255) { - int i; - for (i = 1; i <= 8; i++) { - int bits = 1 << i; - if (range <= bits) - break; - } - return per_put_few_bits(po, number, i); - } else if(range == 256) { - bytes = 1; - } else if(range <= 65536) { - bytes = 2; - } else { /* Ranges > 64K */ - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (range <= bits) - break; - } - assert(i <= 4); - bytes = i; - } - if(aper_put_align(po) < 0) /* Aligning on octet */ - return -1; -/* if(per_put_few_bits(po, bytes, 8)) - return -1; -*/ - return per_put_few_bits(po, number, 8 * bytes); -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_support.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/per_support.h deleted file mode 100644 index 23079c9..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/per_support.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_SUPPORT_H_ -#define _PER_SUPPORT_H_ - -#include /* Platform-specific types */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed PER constraints. - */ -typedef struct asn_per_constraint_s { - enum asn_per_constraint_flags { - APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ - APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ - APC_CONSTRAINED = 0x2, /* Fully constrained */ - APC_EXTENSIBLE = 0x4 /* May have extension */ - } flags; - int range_bits; /* Full number of bits in the range */ - int effective_bits; /* Effective bits */ - long lower_bound; /* "lb" value */ - long upper_bound; /* "ub" value */ -} asn_per_constraint_t; -typedef struct asn_per_constraints_s { - asn_per_constraint_t value; - asn_per_constraint_t size; - int (*value2code)(unsigned int value); - int (*code2value)(unsigned int code); -} asn_per_constraints_t; - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_data_s asn_per_data_t; -#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) -#define per_get_undo(data, bits) asn_get_undo(data, bits) -#define per_get_many_bits(data, dst, align, bits) \ - asn_get_many_bits(data, dst, align, bits) - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Get the length "n" from the Unaligned PER stream. - */ -ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, - size_t lower_bound, int *repeat); - -ssize_t aper_get_length(asn_per_data_t *pd, int range, - int effective_bound_bits, int *repeat); - -/* - * Get the normally small length "n". - */ -ssize_t uper_get_nslength(asn_per_data_t *pd); -ssize_t aper_get_nslength(asn_per_data_t *pd); - -/* - * Get the normally small non-negative whole number. - */ -ssize_t uper_get_nsnnwn(asn_per_data_t *pd); -ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); - -/* X.691-2008/11, #11.5.6 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); - - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_outp_s asn_per_outp_t; -#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) -#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) -#define per_put_aligned_flush(out) asn_put_aligned_flush(out) - - -/* - * Rebase the given value as an offset into the range specified by the - * lower bound (lb) and upper bound (ub). - * RETURN VALUES: - * -1: Conversion failed due to range problems. - * 0: Conversion was successful. - */ -int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); -/* The inverse operation: restores the value by the offset and its bounds. */ -int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); - -/* X.691-2008/11, #11.5 */ -int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "whole_length" to the Unaligned PER stream. - * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. - * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. - * This function returns the number of units which may be flushed - * in the next units saving iteration. - */ -ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, - int *opt_need_eom); - -ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); - -/* Align the current bit position to octet bundary */ -int aper_put_align(asn_per_outp_t *po); -int32_t aper_get_align(asn_per_data_t *pd); - -/* - * Put the normally small length "n" to the Unaligned PER stream. - * Returns 0 or -1. - */ -int uper_put_nslength(asn_per_outp_t *po, size_t length); - -int aper_put_nslength(asn_per_outp_t *po, size_t length); - -/* - * Put the normally small non-negative whole number. - */ -int uper_put_nsnnwn(asn_per_outp_t *po, int n); - -int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_SUPPORT_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_decoder.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_decoder.c deleted file mode 100644 index 5b87703..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_decoder.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* XER/XML parsing support */ - - -/* - * Decode the XER encoding of a given type. - */ -asn_dec_rval_t -xer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *buffer, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); -} - - - -struct xer__cb_arg { - pxml_chunk_type_e chunk_type; - size_t chunk_size; - const void *chunk_buf; - int callback_not_invoked; -}; - -static int -xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { - struct xer__cb_arg *arg = (struct xer__cb_arg *)key; - arg->chunk_type = type; - arg->chunk_size = _chunk_size; - arg->chunk_buf = _chunk_data; - arg->callback_not_invoked = 0; - return -1; /* Terminate the XML parsing */ -} - -/* - * Fetch the next token from the XER/XML stream. - */ -ssize_t -xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { - struct xer__cb_arg arg; - int new_stateContext = *stateContext; - ssize_t ret; - - arg.callback_not_invoked = 1; - ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); - if(ret < 0) return -1; - if(arg.callback_not_invoked) { - assert(ret == 0); /* No data was consumed */ - *ch_type = PXER_WMORE; - return 0; /* Try again with more data */ - } else { - assert(arg.chunk_size); - assert(arg.chunk_buf == buffer); - } - - /* - * Translate the XML chunk types into more convenient ones. - */ - switch(arg.chunk_type) { - case PXML_TEXT: - *ch_type = PXER_TEXT; - break; - case PXML_TAG: - *ch_type = PXER_WMORE; - return 0; /* Want more */ - case PXML_TAG_END: - *ch_type = PXER_TAG; - break; - case PXML_COMMENT: - case PXML_COMMENT_END: - *ch_type = PXER_COMMENT; - break; - } - - *stateContext = new_stateContext; - return arg.chunk_size; -} - -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define RANGLE 0x3e /* '>' */ - -xer_check_tag_e -xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { - const char *buf = (const char *)buf_ptr; - const char *end; - xer_check_tag_e ct = XCT_OPENING; - - if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { - if(size >= 2) - ASN_DEBUG("Broken XML tag: \"%c...%c\"", - buf[0], buf[size - 1]); - return XCT_BROKEN; - } - - /* - * Determine the tag class. - */ - if(buf[1] == CSLASH) { - buf += 2; /* advance past "" */ - ct = XCT_CLOSING; - if(size > 0 && buf[size-1] == CSLASH) - return XCT_BROKEN; /* */ - } else { - buf++; /* advance past "<" */ - size -= 2; /* strip "<" and ">" */ - if(size > 0 && buf[size-1] == CSLASH) { - ct = XCT_BOTH; - size--; /* One more, for "/" */ - } - } - - /* Sometimes we don't care about the tag */ - if(!need_tag || !*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - /* - * Determine the tag name. - */ - for(end = buf + size; buf < end; buf++, need_tag++) { - int b = *buf, n = *need_tag; - if(b != n) { - if(n == 0) { - switch(b) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* "": whitespace is normal */ - return ct; - } - } - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - } - if(b == 0) - return XCT_BROKEN; /* Embedded 0 in buf?! */ - } - if(*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - return ct; -} - - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - if(rval.code != RC_OK) \ - ASN_DEBUG("Failed with %d", rval.code); \ - return rval; \ - } while(0) - -#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ - ssize_t converted_size = body_receiver \ - (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ - if(converted_size == -1) RETURN(RC_FAIL); \ - if(converted_size == 0 \ - && size == (size_t)chunk_size) \ - RETURN(RC_WMORE); \ - chunk_size = converted_size; \ - } while(0) -#define XER_GOT_EMPTY() do { \ - if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ - RETURN(RC_FAIL); \ - } while(0) - -/* - * Generalized function for decoding the primitive values. - */ -asn_dec_rval_t -xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, - const char *xml_tag, /* Expected XML tag */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - - asn_dec_rval_t rval; - ssize_t consumed_myself = 0; - - (void)opt_codec_ctx; - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - */ - if(ctx->phase > 1) RETURN(RC_FAIL); - for(;;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TEXT: - if(ctx->phase == 0) { - /* - * We have to ignore whitespace here, - * but in order to be forward compatible - * with EXTENDED-XER (EMBED-VALUES, #25) - * any text is just ignored here. - */ - } else { - XER_GOT_BODY(buf_ptr, ch_size, size); - } - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - assert(ch_type == PXER_TAG && size); - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - /* - * Phase 0: - * Expecting the opening tag - * for the type being processed. - * Phase 1: - * Waiting for the closing XML tag. - */ - switch(tcv) { - case XCT_BOTH: - if(ctx->phase) break; - /* Finished decoding of an empty element */ - XER_GOT_EMPTY(); - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - case XCT_CLOSING: - if(!ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_UNKNOWN_BO: - /* - * Certain tags in the body may be expected. - */ - if(opt_unexpected_tag_decoder - && opt_unexpected_tag_decoder(struct_key, - buf_ptr, ch_size) >= 0) { - /* Tag's processed fine */ - ADVANCE(ch_size); - if(!ctx->phase) { - /* We are not expecting - * the closing tag anymore. */ - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - } - continue; - } - /* Fall through */ - default: - break; /* Unexpected tag */ - } - - ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); - break; /* Dark and mysterious things have just happened */ - } - - RETURN(RC_FAIL); -} - - -size_t -xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - - for(; p < pend; p++) { - switch(*p) { - /* X.693, #8.1.4 - * HORISONTAL TAB (9) - * LINE FEED (10) - * CARRIAGE RETURN (13) - * SPACE (32) - */ - case 0x09: case 0x0a: case 0x0d: case 0x20: - continue; - default: - break; - } - break; - } - return (p - (const char *)chunk_buf); -} - -/* - * This is a vastly simplified, non-validating XML tree skipper. - */ -int -xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { - assert(*depth > 0); - switch(tcv) { - case XCT_BOTH: - case XCT_UNKNOWN_BO: - /* These negate each other. */ - return 0; - case XCT_OPENING: - case XCT_UNKNOWN_OP: - ++(*depth); - return 0; - case XCT_CLOSING: - case XCT_UNKNOWN_CL: - if(--(*depth) == 0) - return (tcv == XCT_CLOSING) ? 2 : 1; - return 0; - default: - return -1; - } -} diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_decoder.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_decoder.h deleted file mode 100644 index b951c41..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_decoder.h +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_DECODER_H_ -#define _XER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The XER decoder of any ASN.1 type. May be invoked by the application. - * Decodes CANONICAL-XER and BASIC-XER. - */ -asn_dec_rval_t xer_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Type of the type-specific XER decoder function. - */ -typedef asn_dec_rval_t(xer_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, - const char *opt_mname, /* Member name */ - const void *buf_ptr, size_t size); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Generalized function for decoding the primitive values. - * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 - * and others. This function should not be used by applications, as its API - * is subject to changes. - */ -asn_dec_rval_t xer_decode_general( - const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, /* Treated as opaque pointer */ - const char *xml_tag, /* Expected XML tag name */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, - size_t chunk_size, int have_more)); - - -/* - * Fetch the next XER (XML) token from the stream. - * The function returns the number of bytes occupied by the chunk type, - * returned in the _ch_type. The _ch_type is only set (and valid) when - * the return value is >= 0. - */ - typedef enum pxer_chunk_type { - PXER_WMORE, /* Chunk type is not clear, more data expected. */ - PXER_TAG, /* Complete XER tag */ - PXER_TEXT, /* Plain text between XER tags */ - PXER_COMMENT /* A comment, may be part of */ - } pxer_chunk_type_e; -ssize_t xer_next_token(int *stateContext, - const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); - -/* - * This function checks the buffer against the tag name is expected to occur. - */ - typedef enum xer_check_tag { - XCT_BROKEN = 0, /* The tag is broken */ - XCT_OPENING = 1, /* This is the tag */ - XCT_CLOSING = 2, /* This is the tag */ - XCT_BOTH = 3, /* This is the tag */ - XCT__UNK__MASK = 4, /* Mask of everything unexpected */ - XCT_UNKNOWN_OP = 5, /* Unexpected tag */ - XCT_UNKNOWN_CL = 6, /* Unexpected tag */ - XCT_UNKNOWN_BO = 7 /* Unexpected tag */ - } xer_check_tag_e; -xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, - const char *need_tag); - -/* - * Get the number of bytes consisting entirely of XER whitespace characters. - * RETURN VALUES: - * >=0: Number of whitespace characters in the string. - */ -size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); - -/* - * Skip the series of anticipated extensions. - */ -int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_DECODER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_encoder.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_encoder.c deleted file mode 100644 index 4177ede..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_encoder.c +++ /dev/null @@ -1,237 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The XER encoder of any type. May be invoked by the application. - */ -asn_enc_rval_t -xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, - enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - asn_enc_rval_t tmper; - const char *mname; - size_t mlen; - int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; - - if(!td || !sptr) goto cb_failed; - - mname = td->xml_tag; - mlen = strlen(mname); - - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("\n", xcan); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -/* - * This is a helper function for xer_fprint, which directs all incoming data - * into the provided file descriptor. - */ -static int -xer__print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - -int -xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { - asn_enc_rval_t er = {0,0,0}; - - if(!stream) stream = stdout; - if(!td || !sptr) - return -1; - - er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); - if(er.encoded == -1) - return -1; - - return fflush(stream); -} - -struct xer_buffer { - char *buffer; - size_t buffer_size; - size_t allocated_size; -}; - -static int -xer__buffer_append(const void *buffer, size_t size, void *app_key) { - struct xer_buffer *xb = app_key; - - while(xb->buffer_size + size + 1 > xb->allocated_size) { - size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); - char *new_buf = MALLOC(new_size); - if(!new_buf) return -1; - if (xb->buffer) { - memcpy(new_buf, xb->buffer, xb->buffer_size); - } - FREEMEM(xb->buffer); - xb->buffer = new_buf; - xb->allocated_size = new_size; - } - - memcpy(xb->buffer + xb->buffer_size, buffer, size); - xb->buffer_size += size; - xb->buffer[xb->buffer_size] = '\0'; - return 0; -} - -enum xer_equivalence_e -xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, - const void *struct2, FILE *opt_debug_stream) { - struct xer_buffer xb1 = {0, 0, 0}; - struct xer_buffer xb2 = {0, 0, 0}; - asn_enc_rval_t e1, e2; - asn_dec_rval_t rval; - void *sptr = NULL; - - if(!td || !struct1 || !struct2) { - if(opt_debug_stream) { - if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); - if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); - if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); - } - return XEQ_FAILURE; - } - - e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); - if(e1.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - return XEQ_ENCODE1_FAILED; - } - - e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ENCODE1_FAILED; - } - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structures XER-encoded into different byte streams:\n=== " - "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", - xb1.buffer, xb2.buffer); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DIFFERENT; - } else { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Both structures encoded into the same XER byte stream " - "of size %" ASN_PRI_SIZE ":\n%s", - xb1.buffer_size, xb1.buffer); - } - } - - rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, - xb1.buffer_size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decode unexpectedly requires " - "more data:\n%s\n", - td->name, xb1.buffer); - } - /* Fall through */ - case RC_FAIL: - default: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decoding resulted in failure.\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DECODE_FAILED; - } - - if(rval.consumed != xb1.buffer_size - && ((rval.consumed > xb1.buffer_size) - || xer_whitespace_span(xb1.buffer + rval.consumed, - xb1.buffer_size - rval.consumed) - != (xb1.buffer_size - rval.consumed))) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " - "encoded (%" ASN_PRI_SIZE ")\n", - td->name, rval.consumed, xb1.buffer_size); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - /* - * Reuse xb2 to encode newly decoded structure. - */ - FREEMEM(xb2.buffer); - memset(&xb2, 0, sizeof(xb2)); - - e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - ASN_STRUCT_FREE(*td, sptr); - sptr = 0; - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "XER Encoding of round-trip decode of %s resulted in " - "different byte stream:\n" - "=== Original ===\n%s\n" - "=== Round-tripped ===\n%s\n", - xb1.buffer, xb2.buffer, td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_SUCCESS; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_encoder.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_encoder.h deleted file mode 100644 index 9d75922..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_encoder.h +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_ENCODER_H_ -#define _XER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ -enum xer_encoder_flags_e { - /* Mode of encoding */ - XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ - XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ -}; - -/* - * The XER encoder of any type. May be invoked by the application. - * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). - */ -asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* - * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) - * output into the chosen file pointer. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem printing the structure. - * WARNING: No sensible errno value is returned. - */ -int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, - const void *struct_ptr); - -/* - * A helper function that uses XER encoding/decoding to verify that: - * - Both structures encode into the same BASIC XER. - * - Both resulting XER byte streams can be decoded back. - * - Both decoded structures encode into the same BASIC XER (round-trip). - * All of this verifies equivalence between structures and a round-trip. - * ARGUMENTS: - * (opt_debug_stream) - If specified, prints ongoing details. - */ -enum xer_equivalence_e { - XEQ_SUCCESS, /* The only completely positive return value */ - XEQ_FAILURE, /* General failure */ - XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ - XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ - XEQ_DIFFERENT, /* Structures encoded into different XER */ - XEQ_DECODE_FAILED, /* Decode of the XER data failed */ - XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ -}; -enum xer_equivalence_e xer_equivalent( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, - const void *struct2, FILE *opt_debug_stream); - -/* - * Type of the generic XER encoder. - */ -typedef asn_enc_rval_t(xer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int ilevel, /* Level of indentation */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_ENCODER_H_ */ diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_support.c b/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_support.c deleted file mode 100644 index 36b4bfb..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_support.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* Parser states */ -typedef enum { - ST_TEXT, - ST_TAG_START, - ST_TAG_BODY, - ST_TAG_QUOTE_WAIT, - ST_TAG_QUOTED_STRING, - ST_TAG_UNQUOTED_STRING, - ST_COMMENT_WAIT_DASH1, /* ""[0] */ - ST_COMMENT_CLO_RT /* "-->"[1] */ -} pstate_e; - -static const int -_charclass[256] = { - 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, - 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ -}; -#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) -#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) -#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) - -/* Aliases for characters, ASCII/UTF-8 */ -#define EXCLAM 0x21 /* '!' */ -#define CQUOTE 0x22 /* '"' */ -#define CDASH 0x2d /* '-' */ -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define CEQUAL 0x3d /* '=' */ -#define RANGLE 0x3e /* '>' */ -#define CQUEST 0x3f /* '?' */ - -/* Invoke token callback */ -#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ - int _ret; \ - pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ - if (!_sz) { \ - /* Shortcut */ \ - state = _ns; \ - break; \ - } \ - _ret = cb(type, chunk_start, _sz, key); \ - if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ - state = ns; \ - goto finish; \ - } \ - chunk_start = p + _current_too; \ - state = ns; \ - } while(0) - -#define TOKEN_CB(_type, _ns, _current_too) \ - TOKEN_CB_CALL(_type, _ns, _current_too, 0) - -#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END -#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END - -#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ - TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) - -/* - * Parser itself - */ -ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { - pstate_e state = (pstate_e)*stateContext; - const char *chunk_start = (const char *)xmlbuf; - const char *p = chunk_start; - const char *end = p + size; - - for(; p < end; p++) { - int C = *(const unsigned char *)p; - switch(state) { - case ST_TEXT: - /* - * Initial state: we're in the middle of some text, - * or just have started. - */ - if (C == LANGLE) - /* We're now in the tag, probably */ - TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); - break; - case ST_TAG_START: - if (ALPHA(C) || (C == CSLASH)) - state = ST_TAG_BODY; - else if (C == EXCLAM) - state = ST_COMMENT_WAIT_DASH1; - else - /* - * Not characters and not whitespace. - * Must be something like "3 < 4". - */ - TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ - break; - case ST_TAG_BODY: - switch(C) { - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - case LANGLE: - /* - * The previous tag wasn't completed, but still - * recognized as valid. (Mozilla-compatible) - */ - TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); - break; - case CEQUAL: - state = ST_TAG_QUOTE_WAIT; - break; - } - break; - case ST_TAG_QUOTE_WAIT: - /* - * State after the equal sign ("=") in the tag. - */ - switch(C) { - case CQUOTE: - state = ST_TAG_QUOTED_STRING; - break; - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - default: - if(!WHITESPACE(C)) - /* Unquoted string value */ - state = ST_TAG_UNQUOTED_STRING; - } - break; - case ST_TAG_QUOTED_STRING: - /* - * Tag attribute's string value in quotes. - */ - if(C == CQUOTE) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_TAG_UNQUOTED_STRING: - if(C == RANGLE) { - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - } else if(WHITESPACE(C)) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH1: - if(C == CDASH) { - state = ST_COMMENT_WAIT_DASH2; - } else { - /* Some ordinary tag. */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH2: - if(C == CDASH) { - /* Seen "<--" */ - state = ST_COMMENT; - } else { - /* Some ordinary tag */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT: - if(C == CDASH) { - state = ST_COMMENT_CLO_DASH2; - } - break; - case ST_COMMENT_CLO_DASH2: - if(C == CDASH) { - state = ST_COMMENT_CLO_RT; - } else { - /* This is not an end of a comment */ - state = ST_COMMENT; - } - break; - case ST_COMMENT_CLO_RT: - if(C == RANGLE) { - TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); - } else if(C == CDASH) { - /* Maintain current state, still waiting for '>' */ - } else { - state = ST_COMMENT; - } - break; - } /* switch(*ptr) */ - } /* for() */ - - /* - * Flush the partially processed chunk, state permitting. - */ - if(p - chunk_start) { - switch (state) { - case ST_COMMENT: - TOKEN_CB(PXML_COMMENT, state, 0); - break; - case ST_TEXT: - TOKEN_CB(PXML_TEXT, state, 0); - break; - default: break; /* a no-op */ - } - } - -finish: - *stateContext = (int)state; - return chunk_start - (const char *)xmlbuf; -} - diff --git a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_support.h b/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_support.h deleted file mode 100644 index c3a36e7..0000000 --- a/3rdparty/E2SM-gNB-NRT_V4.0.1/xer_support.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_SUPPORT_H_ -#define _XER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Types of data transferred to the application. - */ -typedef enum { - PXML_TEXT, /* Plain text between XML tags. */ - PXML_TAG, /* A tag, starting with '<'. */ - PXML_COMMENT, /* An XML comment, including "". */ - /* - * The following chunk types are reported if the chunk - * terminates the specified XML element. - */ - PXML_TAG_END, /* Tag ended */ - PXML_COMMENT_END /* Comment ended */ -} pxml_chunk_type_e; - -/* - * Callback function that is called by the parser when parsed data is - * available. The _opaque is the pointer to a field containing opaque user - * data specified in pxml_create() call. The chunk type is _type and the text - * data is the piece of buffer identified by _bufid (as supplied to - * pxml_feed() call) starting at offset _offset and of _size bytes size. - * The chunk is NOT '\0'-terminated. - */ -typedef int (pxml_callback_f)(pxml_chunk_type_e _type, - const void *_chunk_data, size_t _chunk_size, void *_key); - -/* - * Parse the given buffer as it were a chunk of XML data. - * Invoke the specified callback each time the meaninful data is found. - * This function returns number of bytes consumed from the bufer. - * It will always be lesser than or equal to the specified _size. - * The next invocation of this function must account the difference. - */ -ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, - pxml_callback_f *cb, void *_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_SUPPORT_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/BIT_STRING.c b/3rdparty/E2SM-gNB-X2-V4.0.1/BIT_STRING.c deleted file mode 100644 index e8d7354..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/BIT_STRING.c +++ /dev/null @@ -1,656 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BIT STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { - sizeof(BIT_STRING_t), - offsetof(BIT_STRING_t, _asn_ctx), - ASN_OSUBV_BIT -}; -asn_TYPE_operation_t asn_OP_BIT_STRING = { - OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ - BIT_STRING_print, - BIT_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_decode_xer_binary, - BIT_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BIT_STRING_decode_oer, - BIT_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BIT_STRING_decode_uper, /* Unaligned PER decoder */ - BIT_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BIT_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { - "BIT STRING", - "BIT_STRING", - &asn_OP_BIT_STRING, - asn_DEF_BIT_STRING_tags, - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - asn_DEF_BIT_STRING_tags, /* Same as above */ - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - { 0, 0, BIT_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs -}; - -/* - * BIT STRING generic constraint. - */ -int -BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - - if(st && st->buf) { - if((st->size == 0 && st->bits_unused) - || st->bits_unused < 0 || st->bits_unused > 7) { - ASN__CTFAIL(app_key, td, sptr, - "%s: invalid padding byte (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} - -static const char *_bit_pattern[16] = { - "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", - "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" -}; - -asn_enc_rval_t -BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - char scratch[128]; - char *p = scratch; - char *scend = scratch + (sizeof(scratch) - 10); - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - int xcan = (flags & XER_F_CANONICAL); - uint8_t *buf; - uint8_t *end; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size - 1; /* Last byte is special */ - - /* - * Binary dump - */ - for(; buf < end; buf++) { - int v = *buf; - int nline = xcan?0:(((buf - st->buf) % 8) == 0); - if(p >= scend || nline) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - if(nline) ASN__TEXT_INDENT(1, ilevel); - } - memcpy(p + 0, _bit_pattern[v >> 4], 4); - memcpy(p + 4, _bit_pattern[v & 0x0f], 4); - p += 8; - } - - if(!xcan && ((buf - st->buf) % 8) == 0) - ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - - if(buf == end) { - int v = *buf; - int ubits = st->bits_unused; - int i; - for(i = 7; i >= ubits; i--) - *p++ = (v & (1 << i)) ? 0x31 : 0x30; - ASN__CALLBACK(scratch, p - scratch); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - - -/* - * BIT STRING specific contents printer. - */ -int -BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - char scratch[64]; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - uint8_t *buf; - uint8_t *end; - char *p = scratch; - - (void)td; /* Unused argument */ - - if(!st || !st->buf) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - ilevel++; - buf = st->buf; - end = buf + st->size; - - /* - * Hexadecimal dump. - */ - for(; buf < end; buf++) { - if((buf - st->buf) % 16 == 0 && (st->size > 16) - && buf != st->buf) { - _i_INDENT(1); - /* Dump the string */ - if(cb(scratch, p - scratch, app_key) < 0) return -1; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Eat the tailing space */ - - if((st->size > 16)) { - _i_INDENT(1); - } - - /* Dump the incomplete 16-bytes row */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - if(st->bits_unused) { - int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", - st->bits_unused, st->bits_unused == 1 ? "" : "s"); - assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); - if(ret > 0 && ret < (ssize_t)sizeof(scratch) - && cb(scratch, ret, app_key) < 0) - return -1; - } - - return 0; -} - -/* - * Non-destructively remove the trailing 0-bits from the given bit string. - */ -static const BIT_STRING_t * -BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { - const uint8_t *b; - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - - if(st->size == 0) { - assert(st->bits_unused == 0); - return st; - } else { - for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { - ; - } - /* b points to the last byte which may contain data */ - if(*b) { - int unused = 7; - uint8_t v = *b; - v &= -(int8_t)v; - if(v & 0x0F) unused -= 4; - if(v & 0x33) unused -= 2; - if(v & 0x55) unused -= 1; - tmp->size = b-st->buf + 1; - tmp->bits_unused = unused; - } else { - tmp->size = b-st->buf; - tmp->bits_unused = 0; - } - - assert(b >= st->buf); - } - - unconst.c_buf = st->buf; - tmp->buf = unconst.nc_buf; - return tmp; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - /* - * Remove information about trailing bits, since - * X.680 (08/2015) #22.7 "ensure that different semantics are not" - * "associated with [values that differ only in] the trailing 0 bits." - */ - BIT_STRING_t compact_a, compact_b; - const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); - const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - - assert(specs && specs->subvariant == ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - /* Figure out how many unused bits */ - if(a->bits_unused > b->bits_unused) { - return -1; - } else if(a->bits_unused < b->bits_unused) { - return 1; - } else { - return 0; - } - } - } else { - return ret; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { - APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; - -asn_dec_rval_t -BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - - (void)opt_codec_ctx; - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - - if(specs->subvariant != ASN_OSUBV_BIT) { - ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); - RETURN(RC_FAIL); - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - st->size = (csiz->upper_bound + 7) >> 3; - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += csiz->upper_bound; - st->buf[st->size] = 0; - st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - BIT_STRING_t compact_bstr; /* Do not modify this directly! */ - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - size_t size_in_bits; - const uint8_t *buf; - int ret; - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(specs->subvariant == ASN_OSUBV_BIT) { - if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - /* Figure out the size without the trailing bits */ - st = BIT_STRING__compactify(st, &compact_bstr); - size_in_bits = 8 * st->size - st->bits_unused; - - ASN_DEBUG( - "Encoding %s into %" ASN_PRI_SIZE " bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_bits > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; - ASN_DEBUG( - "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " - "value %" ASN_PRI_SSIZE "", - st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, - add_trailer, - add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); - ret = per_put_few_bits( - po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = per_put_many_bits(po, st->buf, size_in_bits); - if(ret) ASN__ENCODE_FAILED; - if(add_trailer) { - static const uint8_t zeros[16]; - size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; - while(trailing_zero_bits > 0) { - if(trailing_zero_bits > 8 * sizeof(zeros)) { - ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); - trailing_zero_bits -= 8 * sizeof(zeros); - } else { - ret = per_put_many_bits(po, zeros, trailing_zero_bits); - trailing_zero_bits = 0; - } - if(ret) ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - do { - int need_eom = 0; - ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); - - ret = per_put_many_bits(po, buf, maySave); - if(ret) ASN__ENCODE_FAILED; - - buf += maySave >> 3; - size_in_bits -= maySave; - assert(!(maySave & 0x07) || !size_in_bits); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_bits); - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -asn_random_fill_result_t -BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - static unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_bits, rnd_len; - BIT_STRING_t *st; - - if(max_length == 0) return result_skipped; - - switch(specs->subvariant) { - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - break; - default: - break; - } - - /* Figure out how far we should go */ - rnd_bits = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length < (size_t)pc->lower_bound) { - return result_skipped; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_bits = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_bits = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_bits from the table */ - if(rnd_bits < max_length) { - break; - } - /* Fall through */ - default: - rnd_bits = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_bits = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_bits = asn_random_between(0, max_length - 1); - } - } else if(rnd_bits >= max_length) { - rnd_bits = asn_random_between(0, max_length - 1); - } - - rnd_len = (rnd_bits + 7) / 8; - buf = CALLOC(1, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[rnd_len]; - - for(b = buf; b < bend; b++) { - *(uint8_t *)b = asn_random_between(0, 255); - } - *b = 0; /* Zero-terminate just in case. */ - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = rnd_len; - st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; - if(st->bits_unused) { - assert(st->size > 0); - st->buf[st->size-1] &= 0xff << st->bits_unused; - } - - result_ok.length = st->size; - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/BIT_STRING.h b/3rdparty/E2SM-gNB-X2-V4.0.1/BIT_STRING.h deleted file mode 100644 index c1bdbbc..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/BIT_STRING.h +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BIT_STRING_H_ -#define _BIT_STRING_H_ - -#include /* Some help from OCTET STRING */ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct BIT_STRING_s { - uint8_t *buf; /* BIT STRING body */ - size_t size; /* Size of the above buffer */ - - int bits_unused;/* Unused trailing bits in the last octet (0..7) */ - - asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ -} BIT_STRING_t; - -extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; -extern asn_TYPE_operation_t asn_OP_BIT_STRING; -extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; - -asn_struct_print_f BIT_STRING_print; /* Human-readable output */ -asn_struct_compare_f BIT_STRING_compare; -asn_constr_check_f BIT_STRING_constraint; -xer_type_encoder_f BIT_STRING_encode_xer; -oer_type_decoder_f BIT_STRING_decode_oer; -oer_type_encoder_f BIT_STRING_encode_oer; -per_type_decoder_f BIT_STRING_decode_uper; -per_type_encoder_f BIT_STRING_encode_uper; -asn_random_fill_f BIT_STRING_random_fill; - -#define BIT_STRING_free OCTET_STRING_free -#define BIT_STRING_decode_ber OCTET_STRING_decode_ber -#define BIT_STRING_encode_der OCTET_STRING_encode_der -#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary -#define BIT_STRING_decode_aper OCTET_STRING_decode_aper -#define BIT_STRING_encode_aper OCTET_STRING_encode_aper - -#ifdef __cplusplus -} -#endif - -#endif /* _BIT_STRING_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/BOOLEAN.c b/3rdparty/E2SM-gNB-X2-V4.0.1/BOOLEAN.c deleted file mode 100644 index 25831e2..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/BOOLEAN.c +++ /dev/null @@ -1,492 +0,0 @@ -/*- - * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BOOLEAN basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) -}; -asn_TYPE_operation_t asn_OP_BOOLEAN = { - BOOLEAN_free, - BOOLEAN_print, - BOOLEAN_compare, - BOOLEAN_decode_ber, - BOOLEAN_encode_der, - BOOLEAN_decode_xer, - BOOLEAN_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BOOLEAN_decode_oer, - BOOLEAN_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BOOLEAN_decode_uper, /* Unaligned PER decoder */ - BOOLEAN_encode_uper, /* Unaligned PER encoder */ - BOOLEAN_decode_aper, /* Aligned PER decoder */ - BOOLEAN_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BOOLEAN_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { - "BOOLEAN", - "BOOLEAN", - &asn_OP_BOOLEAN, - asn_DEF_BOOLEAN_tags, - sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), - asn_DEF_BOOLEAN_tags, /* Same as above */ - sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode BOOLEAN type. - */ -asn_dec_rval_t -BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **bool_value, - const void *buf_ptr, size_t size, int tag_mode) { - BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; - asn_dec_rval_t rval; - ber_tlv_len_t length; - ber_tlv_len_t lidx; - - if(st == NULL) { - st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); - if(st == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("Boolean length is %d bytes", (int)length); - - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * Compute boolean value. - */ - for(*st = 0, lidx = 0; - (lidx < length) && *st == 0; lidx++) { - /* - * Very simple approach: read bytes until the end or - * value is already TRUE. - * BOOLEAN is not supposed to contain meaningful data anyway. - */ - *st |= ((const uint8_t *)buf_ptr)[lidx]; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", - (long)rval.consumed, (long)length, - td->name, *st); - - return rval; -} - -asn_enc_rval_t -BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - - erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb) { - uint8_t bool_value; - - bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ - - if(cb(&bool_value, 1, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } - - erval.encoded += 1; - - ASN__ENCODED_OK(erval); -} - - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - BOOLEAN_t *st = (BOOLEAN_t *)sptr; - const char *p = (const char *)chunk_buf; - - (void)td; - - if(chunk_size && p[0] == 0x3c /* '<' */) { - switch(xer_check_tag(chunk_buf, chunk_size, "false")) { - case XCT_BOTH: - /* "" */ - *st = 0; - break; - case XCT_UNKNOWN_BO: - if(xer_check_tag(chunk_buf, chunk_size, "true") - != XCT_BOTH) - return XPBD_BROKEN_ENCODING; - /* "" */ - *st = 1; /* Or 0xff as in DER?.. */ - break; - default: - return XPBD_BROKEN_ENCODING; - } - return XPBD_BODY_CONSUMED; - } else { - return XPBD_BROKEN_ENCODING; - } -} - - -asn_dec_rval_t -BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, - BOOLEAN__xer_body_decode); -} - -asn_enc_rval_t -BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - - (void)ilevel; - (void)flags; - - if(!st) ASN__ENCODE_FAILED; - - if(*st) { - ASN__CALLBACK("", 7); - } else { - ASN__CALLBACK("", 8); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -int -BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - const char *buf; - size_t buflen; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st) { - if(*st) { - buf = "TRUE"; - buflen = 4; - } else { - buf = "FALSE"; - buflen = 5; - } - } else { - buf = ""; - buflen = 8; - } - - return (cb(buf, buflen, app_key) < 0) ? -1 : 0; -} - -void -BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(BOOLEAN_t)); - break; - } - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - BOOLEAN_t *st = (BOOLEAN_t *)*sptr; - - (void)opt_codec_ctx; - (void)td; - (void)constraints; - - if(!st) { - st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - /* - * Extract a single bit - */ - switch(per_get_few_bits(pd, 1)) { - case 1: *st = 1; break; - case 0: *st = 0; break; - case -1: default: ASN__DECODE_STARVED; - } - - ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); - - rv.code = RC_OK; - rv.consumed = 1; - return rv; -} - - -asn_enc_rval_t -BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - - (void)constraints; - - if(!st) ASN__ENCODE_FAILED; - - if(per_put_few_bits(po, *st ? 1 : 0, 1)) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - BOOLEAN_t *st = (BOOLEAN_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - (void)td; - - if(!st) { - st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - /* - * Extract a single bit - */ - switch(per_get_few_bits(pd, 1)) { - case 1: - *st = 1; - break; - case 0: - *st = 0; - break; - case -1: - default: - ASN__DECODE_STARVED; - } - - ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); - - rv.code = RC_OK; - rv.consumed = 1; - return rv; -} - -asn_enc_rval_t -BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - - (void)constraints; - - if(!st) ASN__ENCODE_FAILED; - - if(per_put_few_bits(po, *st ? 1 : 0, 1)) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -#ifndef ASN_DISABLE_OER_SUPPORT - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 1, 0, 0 }; - const BOOLEAN_t *st = sptr; - uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ - - (void)td; - (void)constraints; /* Constraints are unused in OER */ - - if(cb(&bool_value, 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } else { - ASN__ENCODED_OK(er); - } -} - -asn_dec_rval_t -BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - asn_dec_rval_t ok = {RC_OK, 1}; - BOOLEAN_t *st; - - (void)opt_codec_ctx; - (void)td; - (void)constraints; /* Constraints are unused in OER */ - - if(size < 1) { - ASN__DECODE_STARVED; - } - - if(!(st = *sptr)) { - st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - *st = *(const uint8_t *)ptr; - - return ok; -} - - - -#endif - -int -BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const BOOLEAN_t *a = aptr; - const BOOLEAN_t *b = bptr; - - (void)td; - - if(a && b) { - if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ - return 0; - } else if(!*a) { - return -1; - } else { - return 1; - } - } else if(!a) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - BOOLEAN_t *st = *sptr; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(st == NULL) { - return result_failed; - } - } - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->value; - if(pc->flags & APC_CONSTRAINED) { - *st = asn_random_between(pc->lower_bound, pc->upper_bound); - return result_ok; - } - } - - /* Simulate booleans that are sloppily set and biased. */ - switch(asn_random_between(0, 7)) { - case 0: - case 1: - case 2: - *st = 0; break; - case 3: *st = -1; break; - case 4: *st = 1; break; - case 5: *st = INT_MIN; break; - case 6: *st = INT_MAX; break; - default: - *st = asn_random_between(INT_MIN, INT_MAX); - break; - } - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/BOOLEAN.h b/3rdparty/E2SM-gNB-X2-V4.0.1/BOOLEAN.h deleted file mode 100644 index 620acf7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/BOOLEAN.h +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BOOLEAN_H_ -#define _BOOLEAN_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The underlying integer may contain various values, but everything - * non-zero is capped to 0xff by the DER encoder. The BER decoder may - * yield non-zero values different from 1, beware. - */ -typedef int BOOLEAN_t; - -extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; -extern asn_TYPE_operation_t asn_OP_BOOLEAN; - -asn_struct_free_f BOOLEAN_free; -asn_struct_print_f BOOLEAN_print; -asn_struct_compare_f BOOLEAN_compare; -ber_type_decoder_f BOOLEAN_decode_ber; -der_type_encoder_f BOOLEAN_encode_der; -oer_type_decoder_f BOOLEAN_decode_oer; -oer_type_encoder_f BOOLEAN_encode_oer; -per_type_decoder_f BOOLEAN_decode_uper; -per_type_encoder_f BOOLEAN_encode_uper; -per_type_decoder_f BOOLEAN_decode_aper; -per_type_encoder_f BOOLEAN_encode_aper; -xer_type_decoder_f BOOLEAN_decode_xer; -xer_type_encoder_f BOOLEAN_encode_xer; -asn_random_fill_f BOOLEAN_random_fill; - -#define BOOLEAN_constraint asn_generic_no_constraint - -#ifdef __cplusplus -} -#endif - -#endif /* _BOOLEAN_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-ID.c deleted file mode 100644 index db59bdc..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ActionParameter-ID.h" - -int -E2_ActionParameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_ActionParameter_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_ActionParameter_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_ActionParameter_ID = { - "ActionParameter-ID", - "ActionParameter-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_ActionParameter_ID_tags_1, - sizeof(asn_DEF_E2_ActionParameter_ID_tags_1) - /sizeof(asn_DEF_E2_ActionParameter_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_ActionParameter_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_ActionParameter_ID_tags_1) - /sizeof(asn_DEF_E2_ActionParameter_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_ActionParameter_ID_constr_1, E2_ActionParameter_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-ID.h deleted file mode 100644 index d70eb2a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ActionParameter_ID_H_ -#define _E2_ActionParameter_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_ActionParameter-ID */ -typedef long E2_ActionParameter_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_ActionParameter_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_ActionParameter_ID; -asn_struct_free_f E2_ActionParameter_ID_free; -asn_struct_print_f E2_ActionParameter_ID_print; -asn_constr_check_f E2_ActionParameter_ID_constraint; -ber_type_decoder_f E2_ActionParameter_ID_decode_ber; -der_type_encoder_f E2_ActionParameter_ID_encode_der; -xer_type_decoder_f E2_ActionParameter_ID_decode_xer; -xer_type_encoder_f E2_ActionParameter_ID_encode_xer; -per_type_decoder_f E2_ActionParameter_ID_decode_uper; -per_type_encoder_f E2_ActionParameter_ID_encode_uper; -per_type_decoder_f E2_ActionParameter_ID_decode_aper; -per_type_encoder_f E2_ActionParameter_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ActionParameter_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Item.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Item.c deleted file mode 100644 index bb06117..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ActionParameter-Item.h" - -asn_TYPE_member_t asn_MBR_E2_ActionParameter_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Item, actionParameter_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_ActionParameter_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "actionParameter-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Item, actionParameter_Value), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_ActionParameter_Value, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "actionParameter-Value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ActionParameter_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_ActionParameter_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionParameter-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionParameter-Value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_ActionParameter_Item_specs_1 = { - sizeof(struct E2_ActionParameter_Item), - offsetof(struct E2_ActionParameter_Item, _asn_ctx), - asn_MAP_E2_ActionParameter_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_ActionParameter_Item = { - "ActionParameter-Item", - "ActionParameter-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_ActionParameter_Item_tags_1, - sizeof(asn_DEF_E2_ActionParameter_Item_tags_1) - /sizeof(asn_DEF_E2_ActionParameter_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_ActionParameter_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_ActionParameter_Item_tags_1) - /sizeof(asn_DEF_E2_ActionParameter_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_ActionParameter_Item_1, - 2, /* Elements count */ - &asn_SPC_E2_ActionParameter_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Item.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Item.h deleted file mode 100644 index 17171fc..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ActionParameter_Item_H_ -#define _E2_ActionParameter_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_ActionParameter-ID.h" -#include "E2_ActionParameter-Value.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_ActionParameter-Item */ -typedef struct E2_ActionParameter_Item { - E2_ActionParameter_ID_t actionParameter_ID; - E2_ActionParameter_Value_t actionParameter_Value; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_ActionParameter_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_ActionParameter_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_ActionParameter_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_ActionParameter_Item_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ActionParameter_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Value.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Value.c deleted file mode 100644 index 78953c0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Value.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ActionParameter-Value.h" - -asn_per_constraints_t asn_PER_type_E2_ActionParameter_Value_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_ActionParameter_Value_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Value, choice.valueInt), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueInt" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Value, choice.valueEnum), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueEnum" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Value, choice.valueBool), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BOOLEAN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBool" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Value, choice.valueBitS), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBitS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Value, choice.valueOctS), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueOctS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ActionParameter_Value, choice.valuePrtS), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valuePrtS" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_ActionParameter_Value_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrtS */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_ActionParameter_Value_specs_1 = { - sizeof(struct E2_ActionParameter_Value), - offsetof(struct E2_ActionParameter_Value, _asn_ctx), - offsetof(struct E2_ActionParameter_Value, present), - sizeof(((struct E2_ActionParameter_Value *)0)->present), - asn_MAP_E2_ActionParameter_Value_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, - 6 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_ActionParameter_Value = { - "ActionParameter-Value", - "ActionParameter-Value", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_ActionParameter_Value_constr_1, CHOICE_constraint }, - asn_MBR_E2_ActionParameter_Value_1, - 6, /* Elements count */ - &asn_SPC_E2_ActionParameter_Value_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Value.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Value.h deleted file mode 100644 index 419429a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ActionParameter-Value.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ActionParameter_Value_H_ -#define _E2_ActionParameter_Value_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "BOOLEAN.h" -#include "BIT_STRING.h" -#include "OCTET_STRING.h" -#include "PrintableString.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_ActionParameter_Value_PR { - E2_ActionParameter_Value_PR_NOTHING, /* No components present */ - E2_ActionParameter_Value_PR_valueInt, - E2_ActionParameter_Value_PR_valueEnum, - E2_ActionParameter_Value_PR_valueBool, - E2_ActionParameter_Value_PR_valueBitS, - E2_ActionParameter_Value_PR_valueOctS, - E2_ActionParameter_Value_PR_valuePrtS - /* Extensions may appear below */ - -} E2_ActionParameter_Value_PR; - -/* E2_ActionParameter-Value */ -typedef struct E2_ActionParameter_Value { - E2_ActionParameter_Value_PR present; - union E2_ActionParameter_Value_u { - long valueInt; - long valueEnum; - BOOLEAN_t valueBool; - BIT_STRING_t valueBitS; - OCTET_STRING_t valueOctS; - PrintableString_t valuePrtS; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_ActionParameter_Value_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_ActionParameter_Value; -extern asn_CHOICE_specifics_t asn_SPC_E2_ActionParameter_Value_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_ActionParameter_Value_1[6]; -extern asn_per_constraints_t asn_PER_type_E2_ActionParameter_Value_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ActionParameter_Value_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_CallProcess-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_CallProcess-ID.c deleted file mode 100644 index 36de089..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_CallProcess-ID.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_CallProcess-ID.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_CallProcess_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_CallProcess_ID = { - "CallProcess-ID", - "CallProcess-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_CallProcess_ID_tags_1, - sizeof(asn_DEF_E2_CallProcess_ID_tags_1) - /sizeof(asn_DEF_E2_CallProcess_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_CallProcess_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_CallProcess_ID_tags_1) - /sizeof(asn_DEF_E2_CallProcess_ID_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_CallProcess-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_CallProcess-ID.h deleted file mode 100644 index f1a1293..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_CallProcess-ID.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_CallProcess_ID_H_ -#define _E2_CallProcess_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_CallProcess-ID */ -typedef long E2_CallProcess_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_CallProcess_ID; -asn_struct_free_f E2_CallProcess_ID_free; -asn_struct_print_f E2_CallProcess_ID_print; -asn_constr_check_f E2_CallProcess_ID_constraint; -ber_type_decoder_f E2_CallProcess_ID_decode_ber; -der_type_encoder_f E2_CallProcess_ID_encode_der; -xer_type_decoder_f E2_CallProcess_ID_decode_xer; -xer_type_encoder_f E2_CallProcess_ID_encode_xer; -per_type_decoder_f E2_CallProcess_ID_decode_uper; -per_type_encoder_f E2_CallProcess_ID_encode_uper; -per_type_decoder_f E2_CallProcess_ID_decode_aper; -per_type_encoder_f E2_CallProcess_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_CallProcess_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Criticality.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Criticality.c deleted file mode 100644 index 45e7365..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Criticality.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_Criticality.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_E2_Criticality_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_Criticality_value2enum_1[] = { - { 0, 6, "reject" }, - { 1, 6, "ignore" }, - { 2, 6, "notify" } -}; -static const unsigned int asn_MAP_E2_Criticality_enum2value_1[] = { - 1, /* ignore(1) */ - 2, /* notify(2) */ - 0 /* reject(0) */ -}; -static const asn_INTEGER_specifics_t asn_SPC_E2_Criticality_specs_1 = { - asn_MAP_E2_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_Criticality_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_Criticality_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_Criticality = { - "Criticality", - "Criticality", - &asn_OP_NativeEnumerated, - asn_DEF_E2_Criticality_tags_1, - sizeof(asn_DEF_E2_Criticality_tags_1) - /sizeof(asn_DEF_E2_Criticality_tags_1[0]), /* 1 */ - asn_DEF_E2_Criticality_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_Criticality_tags_1) - /sizeof(asn_DEF_E2_Criticality_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_Criticality_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_Criticality_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Criticality.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Criticality.h deleted file mode 100644 index a23afdf..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Criticality.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_Criticality_H_ -#define _E2_Criticality_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_Criticality { - E2_Criticality_reject = 0, - E2_Criticality_ignore = 1, - E2_Criticality_notify = 2 -} e_E2_Criticality; - -/* E2_Criticality */ -typedef long E2_Criticality_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_Criticality; -asn_struct_free_f E2_Criticality_free; -asn_struct_print_f E2_Criticality_print; -asn_constr_check_f E2_Criticality_constraint; -ber_type_decoder_f E2_Criticality_decode_ber; -der_type_encoder_f E2_Criticality_encode_der; -xer_type_decoder_f E2_Criticality_decode_xer; -xer_type_encoder_f E2_Criticality_encode_xer; -per_type_decoder_f E2_Criticality_decode_uper; -per_type_encoder_f E2_Criticality_encode_uper; -per_type_decoder_f E2_Criticality_decode_aper; -per_type_encoder_f E2_Criticality_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_Criticality_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinition-Format2.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinition-Format2.c deleted file mode 100644 index da30805..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinition-Format2.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-ActionDefinition-Format2.h" - -#include "E2_RANueGroup-Item.h" -static int -memb_E2_ranUEgroup_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 15)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ranUEgroup_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranUEgroup_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ranUEgroup_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANueGroup_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ranUEgroup_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ranUEgroup_List_specs_2 = { - sizeof(struct E2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List), - offsetof(struct E2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ranUEgroup_List_2 = { - "ranUEgroup-List", - "ranUEgroup-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ranUEgroup_List_tags_2, - sizeof(asn_DEF_E2_ranUEgroup_List_tags_2) - /sizeof(asn_DEF_E2_ranUEgroup_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_E2_ranUEgroup_List_tags_2, /* Same as above */ - sizeof(asn_DEF_E2_ranUEgroup_List_tags_2) - /sizeof(asn_DEF_E2_ranUEgroup_List_tags_2[0]), /* 2 */ - { 0, &asn_PER_type_E2_ranUEgroup_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_E2_ranUEgroup_List_2, - 1, /* Single element */ - &asn_SPC_E2_ranUEgroup_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_ActionDefinition_Format2_1[] = { - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_X2_ActionDefinition_Format2, ranUEgroup_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_E2_ranUEgroup_List_2, - 0, - { 0, &asn_PER_memb_E2_ranUEgroup_List_constr_2, memb_E2_ranUEgroup_List_constraint_1 }, - 0, 0, /* No default value */ - "ranUEgroup-List" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_X2_ActionDefinition_Format2_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_ActionDefinition_Format2_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranUEgroup-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_ActionDefinition_Format2_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_ActionDefinition_Format2), - offsetof(struct E2_E2SM_gNB_X2_ActionDefinition_Format2, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_ActionDefinition_Format2_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_X2_ActionDefinition_Format2_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2 = { - "E2SM-gNB-X2-ActionDefinition-Format2", - "E2SM-gNB-X2-ActionDefinition-Format2", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_ActionDefinition_Format2_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_ActionDefinition_Format2_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinition-Format2.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinition-Format2.h deleted file mode 100644 index 730020f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinition-Format2.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_ActionDefinition_Format2_H_ -#define _E2_E2SM_gNB_X2_ActionDefinition_Format2_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANueGroup_Item; - -/* E2_E2SM-gNB-X2-ActionDefinition-Format2 */ -typedef struct E2_E2SM_gNB_X2_ActionDefinition_Format2 { - struct E2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List { - A_SEQUENCE_OF(struct E2_RANueGroup_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ranUEgroup_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_ActionDefinition_Format2_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_ActionDefinition_Format2_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_ActionDefinition_Format2_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_ActionDefinition_Format2_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinitionChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinitionChoice.c deleted file mode 100644 index 989aaae..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinitionChoice.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-ActionDefinitionChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_ActionDefinitionChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_ActionDefinitionChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_ActionDefinitionChoice, choice.actionDefinition_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_actionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "actionDefinition-Format1" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_ActionDefinitionChoice, choice.actionDefinition_Format2), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_ActionDefinition_Format2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "actionDefinition-Format2" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_ActionDefinitionChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionDefinition-Format1 */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDefinition-Format2 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_ActionDefinitionChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_ActionDefinitionChoice), - offsetof(struct E2_E2SM_gNB_X2_ActionDefinitionChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_ActionDefinitionChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_ActionDefinitionChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_ActionDefinitionChoice_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice = { - "E2SM-gNB-X2-ActionDefinitionChoice", - "E2SM-gNB-X2-ActionDefinitionChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_ActionDefinitionChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_ActionDefinitionChoice_1, - 2, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_ActionDefinitionChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinitionChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinitionChoice.h deleted file mode 100644 index 527b128..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ActionDefinitionChoice.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_ActionDefinitionChoice_H_ -#define _E2_E2SM_gNB_X2_ActionDefinitionChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-actionDefinition.h" -#include "E2_E2SM-gNB-X2-ActionDefinition-Format2.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_ActionDefinitionChoice_PR { - E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format1, - E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format2 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_ActionDefinitionChoice_PR; - -/* E2_E2SM-gNB-X2-ActionDefinitionChoice */ -typedef struct E2_E2SM_gNB_X2_ActionDefinitionChoice { - E2_E2SM_gNB_X2_ActionDefinitionChoice_PR present; - union E2_E2SM_gNB_X2_ActionDefinitionChoice_u { - E2_E2SM_gNB_X2_actionDefinition_t actionDefinition_Format1; - E2_E2SM_gNB_X2_ActionDefinition_Format2_t actionDefinition_Format2; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_ActionDefinitionChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_ActionDefinitionChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-CallProcessIDChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-CallProcessIDChoice.c deleted file mode 100644 index 3990504..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-CallProcessIDChoice.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-CallProcessIDChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_CallProcessIDChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_CallProcessIDChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_CallProcessIDChoice, choice.callProcessID_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_callProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "callProcessID-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_CallProcessIDChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* callProcessID-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_CallProcessIDChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_CallProcessIDChoice), - offsetof(struct E2_E2SM_gNB_X2_CallProcessIDChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_CallProcessIDChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_CallProcessIDChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_CallProcessIDChoice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_CallProcessIDChoice = { - "E2SM-gNB-X2-CallProcessIDChoice", - "E2SM-gNB-X2-CallProcessIDChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_CallProcessIDChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_CallProcessIDChoice_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_CallProcessIDChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-CallProcessIDChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-CallProcessIDChoice.h deleted file mode 100644 index 7428d2d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-CallProcessIDChoice.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_CallProcessIDChoice_H_ -#define _E2_E2SM_gNB_X2_CallProcessIDChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-callProcessID.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_CallProcessIDChoice_PR { - E2_E2SM_gNB_X2_CallProcessIDChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_CallProcessIDChoice_PR_callProcessID_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_CallProcessIDChoice_PR; - -/* E2_E2SM-gNB-X2-CallProcessIDChoice */ -typedef struct E2_E2SM_gNB_X2_CallProcessIDChoice { - E2_E2SM_gNB_X2_CallProcessIDChoice_PR present; - union E2_E2SM_gNB_X2_CallProcessIDChoice_u { - E2_E2SM_gNB_X2_callProcessID_t callProcessID_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_CallProcessIDChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_CallProcessIDChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_CallProcessIDChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlHeaderChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlHeaderChoice.c deleted file mode 100644 index a3f277e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlHeaderChoice.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-ControlHeaderChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_ControlHeaderChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_ControlHeaderChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_ControlHeaderChoice, choice.controlHeader_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_controlHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "controlHeader-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_ControlHeaderChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlHeader-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_ControlHeaderChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_ControlHeaderChoice), - offsetof(struct E2_E2SM_gNB_X2_ControlHeaderChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_ControlHeaderChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_ControlHeaderChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_ControlHeaderChoice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ControlHeaderChoice = { - "E2SM-gNB-X2-ControlHeaderChoice", - "E2SM-gNB-X2-ControlHeaderChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_ControlHeaderChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_ControlHeaderChoice_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_ControlHeaderChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlHeaderChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlHeaderChoice.h deleted file mode 100644 index b1d79da..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlHeaderChoice.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_ControlHeaderChoice_H_ -#define _E2_E2SM_gNB_X2_ControlHeaderChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-controlHeader.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_ControlHeaderChoice_PR { - E2_E2SM_gNB_X2_ControlHeaderChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_ControlHeaderChoice_PR_controlHeader_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_ControlHeaderChoice_PR; - -/* E2_E2SM-gNB-X2-ControlHeaderChoice */ -typedef struct E2_E2SM_gNB_X2_ControlHeaderChoice { - E2_E2SM_gNB_X2_ControlHeaderChoice_PR present; - union E2_E2SM_gNB_X2_ControlHeaderChoice_u { - E2_E2SM_gNB_X2_controlHeader_t controlHeader_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_ControlHeaderChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ControlHeaderChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_ControlHeaderChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlMessageChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlMessageChoice.c deleted file mode 100644 index e480872..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlMessageChoice.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-ControlMessageChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_ControlMessageChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_ControlMessageChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_ControlMessageChoice, choice.controlMessage_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_controlMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "controlMessage-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_ControlMessageChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlMessage-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_ControlMessageChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_ControlMessageChoice), - offsetof(struct E2_E2SM_gNB_X2_ControlMessageChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_ControlMessageChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_ControlMessageChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_ControlMessageChoice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ControlMessageChoice = { - "E2SM-gNB-X2-ControlMessageChoice", - "E2SM-gNB-X2-ControlMessageChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_ControlMessageChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_ControlMessageChoice_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_ControlMessageChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlMessageChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlMessageChoice.h deleted file mode 100644 index 50e8aa1..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-ControlMessageChoice.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_ControlMessageChoice_H_ -#define _E2_E2SM_gNB_X2_ControlMessageChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-controlMessage.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_ControlMessageChoice_PR { - E2_E2SM_gNB_X2_ControlMessageChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_ControlMessageChoice_PR_controlMessage_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_ControlMessageChoice_PR; - -/* E2_E2SM-gNB-X2-ControlMessageChoice */ -typedef struct E2_E2SM_gNB_X2_ControlMessageChoice { - E2_E2SM_gNB_X2_ControlMessageChoice_PR present; - union E2_E2SM_gNB_X2_ControlMessageChoice_u { - E2_E2SM_gNB_X2_controlMessage_t controlMessage_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_ControlMessageChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_ControlMessageChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_ControlMessageChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.c deleted file mode 100644 index ee01b6a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_EventTriggerDefinitionChoice, choice.eventTriggerDefinition_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eventTriggerDefinition-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventTriggerDefinition-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_EventTriggerDefinitionChoice), - offsetof(struct E2_E2SM_gNB_X2_EventTriggerDefinitionChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_EventTriggerDefinitionChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_EventTriggerDefinitionChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice = { - "E2SM-gNB-X2-EventTriggerDefinitionChoice", - "E2SM-gNB-X2-EventTriggerDefinitionChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.h deleted file mode 100644 index a631534..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_H_ -#define _E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-eventTriggerDefinition.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_PR { - E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_PR_eventTriggerDefinition_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_PR; - -/* E2_E2SM-gNB-X2-EventTriggerDefinitionChoice */ -typedef struct E2_E2SM_gNB_X2_EventTriggerDefinitionChoice { - E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_PR present; - union E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_u { - E2_E2SM_gNB_X2_eventTriggerDefinition_t eventTriggerDefinition_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_EventTriggerDefinitionChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_EventTriggerDefinitionChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationHeaderChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationHeaderChoice.c deleted file mode 100644 index a3711fa..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationHeaderChoice.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-IndicationHeaderChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_IndicationHeaderChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_IndicationHeaderChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_IndicationHeaderChoice, choice.indicationHeader_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_indicationHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationHeader-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_IndicationHeaderChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_IndicationHeaderChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_IndicationHeaderChoice), - offsetof(struct E2_E2SM_gNB_X2_IndicationHeaderChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_IndicationHeaderChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_IndicationHeaderChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_IndicationHeaderChoice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_IndicationHeaderChoice = { - "E2SM-gNB-X2-IndicationHeaderChoice", - "E2SM-gNB-X2-IndicationHeaderChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_IndicationHeaderChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_IndicationHeaderChoice_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_IndicationHeaderChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationHeaderChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationHeaderChoice.h deleted file mode 100644 index 2e962c1..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationHeaderChoice.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_IndicationHeaderChoice_H_ -#define _E2_E2SM_gNB_X2_IndicationHeaderChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-indicationHeader.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_IndicationHeaderChoice_PR { - E2_E2SM_gNB_X2_IndicationHeaderChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_IndicationHeaderChoice_PR_indicationHeader_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_IndicationHeaderChoice_PR; - -/* E2_E2SM-gNB-X2-IndicationHeaderChoice */ -typedef struct E2_E2SM_gNB_X2_IndicationHeaderChoice { - E2_E2SM_gNB_X2_IndicationHeaderChoice_PR present; - union E2_E2SM_gNB_X2_IndicationHeaderChoice_u { - E2_E2SM_gNB_X2_indicationHeader_t indicationHeader_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_IndicationHeaderChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_IndicationHeaderChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_IndicationHeaderChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationMessageChoice.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationMessageChoice.c deleted file mode 100644 index d0aaa62..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationMessageChoice.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-IndicationMessageChoice.h" - -static asn_per_constraints_t asn_PER_type_E2_E2SM_gNB_X2_IndicationMessageChoice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_IndicationMessageChoice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_IndicationMessageChoice, choice.indicationMessage_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_E2SM_gNB_X2_indicationMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationMessage-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_IndicationMessageChoice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2_E2SM_gNB_X2_IndicationMessageChoice_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_IndicationMessageChoice), - offsetof(struct E2_E2SM_gNB_X2_IndicationMessageChoice, _asn_ctx), - offsetof(struct E2_E2SM_gNB_X2_IndicationMessageChoice, present), - sizeof(((struct E2_E2SM_gNB_X2_IndicationMessageChoice *)0)->present), - asn_MAP_E2_E2SM_gNB_X2_IndicationMessageChoice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_IndicationMessageChoice = { - "E2SM-gNB-X2-IndicationMessageChoice", - "E2SM-gNB-X2-IndicationMessageChoice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_E2SM_gNB_X2_IndicationMessageChoice_constr_1, CHOICE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_IndicationMessageChoice_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_IndicationMessageChoice_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationMessageChoice.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationMessageChoice.h deleted file mode 100644 index 1dfcff3..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-IndicationMessageChoice.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_IndicationMessageChoice_H_ -#define _E2_E2SM_gNB_X2_IndicationMessageChoice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_E2SM-gNB-X2-indicationMessage.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_E2SM_gNB_X2_IndicationMessageChoice_PR { - E2_E2SM_gNB_X2_IndicationMessageChoice_PR_NOTHING, /* No components present */ - E2_E2SM_gNB_X2_IndicationMessageChoice_PR_indicationMessage_Format1 - /* Extensions may appear below */ - -} E2_E2SM_gNB_X2_IndicationMessageChoice_PR; - -/* E2_E2SM-gNB-X2-IndicationMessageChoice */ -typedef struct E2_E2SM_gNB_X2_IndicationMessageChoice { - E2_E2SM_gNB_X2_IndicationMessageChoice_PR present; - union E2_E2SM_gNB_X2_IndicationMessageChoice_u { - E2_E2SM_gNB_X2_indicationMessage_t indicationMessage_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_IndicationMessageChoice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_IndicationMessageChoice; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_IndicationMessageChoice_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-RANfunction-Definition.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-RANfunction-Definition.c deleted file mode 100644 index 4b8a7c8..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-RANfunction-Definition.c +++ /dev/null @@ -1,472 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-RANfunction-Definition.h" - -#include "E2_RIC-EventTriggerStyle-List.h" -#include "E2_RIC-ReportStyle-List.h" -#include "E2_RIC-InsertStyle-List.h" -#include "E2_RIC-ControlStyle-List.h" -#include "E2_RIC-PolicyStyle-List.h" -static int -memb_E2_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_InsertStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_ControlStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_ric_PolicyStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_ReportStyle_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_InsertStyle_List_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_ControlStyle_List_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_type_E2_ric_PolicyStyle_List_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_ReportStyle_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_InsertStyle_List_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_ControlStyle_List_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_PolicyStyle_List_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_EventTriggerStyle_List_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_EventTriggerStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_EventTriggerStyle_List_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_EventTriggerStyle_List_specs_3 = { - sizeof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_EventTriggerStyle_List), - offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_EventTriggerStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_EventTriggerStyle_List_3 = { - "ric-EventTriggerStyle-List", - "ric-EventTriggerStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_EventTriggerStyle_List_tags_3, - sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3) - /sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */ - asn_DEF_E2_ric_EventTriggerStyle_List_tags_3, /* Same as above */ - sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3) - /sizeof(asn_DEF_E2_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_EventTriggerStyle_List_3, - 1, /* Single element */ - &asn_SPC_E2_ric_EventTriggerStyle_List_specs_3 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_ReportStyle_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_ReportStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_ReportStyle_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_ReportStyle_List_specs_5 = { - sizeof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_ReportStyle_List), - offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_ReportStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_ReportStyle_List_5 = { - "ric-ReportStyle-List", - "ric-ReportStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_ReportStyle_List_tags_5, - sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_ReportStyle_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportStyle_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_ReportStyle_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_ReportStyle_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_ReportStyle_List_specs_5 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_InsertStyle_List_7[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_InsertStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_InsertStyle_List_tags_7[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_InsertStyle_List_specs_7 = { - sizeof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_InsertStyle_List), - offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_InsertStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_InsertStyle_List_7 = { - "ric-InsertStyle-List", - "ric-InsertStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_InsertStyle_List_tags_7, - sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7) - /sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7[0]) - 1, /* 1 */ - asn_DEF_E2_ric_InsertStyle_List_tags_7, /* Same as above */ - sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7) - /sizeof(asn_DEF_E2_ric_InsertStyle_List_tags_7[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_InsertStyle_List_constr_7, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_InsertStyle_List_7, - 1, /* Single element */ - &asn_SPC_E2_ric_InsertStyle_List_specs_7 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_ControlStyle_List_9[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_ControlStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_ControlStyle_List_tags_9[] = { - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_ControlStyle_List_specs_9 = { - sizeof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_ControlStyle_List), - offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_ControlStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_ControlStyle_List_9 = { - "ric-ControlStyle-List", - "ric-ControlStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_ControlStyle_List_tags_9, - sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9) - /sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9[0]) - 1, /* 1 */ - asn_DEF_E2_ric_ControlStyle_List_tags_9, /* Same as above */ - sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9) - /sizeof(asn_DEF_E2_ric_ControlStyle_List_tags_9[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_ControlStyle_List_constr_9, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_ControlStyle_List_9, - 1, /* Single element */ - &asn_SPC_E2_ric_ControlStyle_List_specs_9 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_ric_PolicyStyle_List_11[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RIC_PolicyStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_PolicyStyle_List_tags_11[] = { - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_PolicyStyle_List_specs_11 = { - sizeof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_PolicyStyle_List), - offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_PolicyStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_PolicyStyle_List_11 = { - "ric-PolicyStyle-List", - "ric-PolicyStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_PolicyStyle_List_tags_11, - sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11) - /sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11[0]) - 1, /* 1 */ - asn_DEF_E2_ric_PolicyStyle_List_tags_11, /* Same as above */ - sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11) - /sizeof(asn_DEF_E2_ric_PolicyStyle_List_tags_11[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_PolicyStyle_List_constr_11, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_PolicyStyle_List_11, - 1, /* Single element */ - &asn_SPC_E2_ric_PolicyStyle_List_specs_11 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_RANfunction_Definition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, ranFunction_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANfunction_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Name" - }, - { ATF_POINTER, 5, offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, ric_EventTriggerStyle_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_E2_ric_EventTriggerStyle_List_3, - 0, - { 0, &asn_PER_memb_E2_ric_EventTriggerStyle_List_constr_3, memb_E2_ric_EventTriggerStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-List" - }, - { ATF_POINTER, 4, offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, ric_ReportStyle_List), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - 0, - &asn_DEF_E2_ric_ReportStyle_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_ReportStyle_List_constr_5, memb_E2_ric_ReportStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-ReportStyle-List" - }, - { ATF_POINTER, 3, offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, ric_InsertStyle_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_InsertStyle_List_7, - 0, - { 0, &asn_PER_memb_E2_ric_InsertStyle_List_constr_7, memb_E2_ric_InsertStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-InsertStyle-List" - }, - { ATF_POINTER, 2, offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, ric_ControlStyle_List), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - 0, - &asn_DEF_E2_ric_ControlStyle_List_9, - 0, - { 0, &asn_PER_memb_E2_ric_ControlStyle_List_constr_9, memb_E2_ric_ControlStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-ControlStyle-List" - }, - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, ric_PolicyStyle_List), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - 0, - &asn_DEF_E2_ric_PolicyStyle_List_11, - 0, - { 0, &asn_PER_memb_E2_ric_PolicyStyle_List_constr_11, memb_E2_ric_PolicyStyle_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-PolicyStyle-List" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_X2_RANfunction_Definition_oms_1[] = { 1, 2, 3, 4, 5 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_RANfunction_Definition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-InsertStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-ControlStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-PolicyStyle-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_RANfunction_Definition_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_RANfunction_Definition), - offsetof(struct E2_E2SM_gNB_X2_RANfunction_Definition, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_RANfunction_Definition_tag2el_1, - 6, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_X2_RANfunction_Definition_oms_1, /* Optional members */ - 5, 0, /* Root/Additions */ - 6, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition = { - "E2SM-gNB-X2-RANfunction-Definition", - "E2SM-gNB-X2-RANfunction-Definition", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_RANfunction_Definition_1, - 6, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_RANfunction_Definition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-RANfunction-Definition.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-RANfunction-Definition.h deleted file mode 100644 index 80cc5e0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-RANfunction-Definition.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_RANfunction_Definition_H_ -#define _E2_E2SM_gNB_X2_RANfunction_Definition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANfunction-Name.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RIC_EventTriggerStyle_List; -struct E2_RIC_ReportStyle_List; -struct E2_RIC_InsertStyle_List; -struct E2_RIC_ControlStyle_List; -struct E2_RIC_PolicyStyle_List; - -/* E2_E2SM-gNB-X2-RANfunction-Definition */ -typedef struct E2_E2SM_gNB_X2_RANfunction_Definition { - E2_RANfunction_Name_t ranFunction_Name; - struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_EventTriggerStyle_List { - A_SEQUENCE_OF(struct E2_RIC_EventTriggerStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_EventTriggerStyle_List; - struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_ReportStyle_List { - A_SEQUENCE_OF(struct E2_RIC_ReportStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_ReportStyle_List; - struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_InsertStyle_List { - A_SEQUENCE_OF(struct E2_RIC_InsertStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_InsertStyle_List; - struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_ControlStyle_List { - A_SEQUENCE_OF(struct E2_RIC_ControlStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_ControlStyle_List; - struct E2_E2SM_gNB_X2_RANfunction_Definition__ric_PolicyStyle_List { - A_SEQUENCE_OF(struct E2_RIC_PolicyStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_PolicyStyle_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_RANfunction_Definition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_RANfunction_Definition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_RANfunction_Definition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-actionDefinition.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-actionDefinition.c deleted file mode 100644 index 18ef330..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-actionDefinition.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-actionDefinition.h" - -#include "E2_ActionParameter-Item.h" -static int -memb_E2_actionParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_actionParameter_List_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_actionParameter_List_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_actionParameter_List_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_ActionParameter_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_actionParameter_List_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_actionParameter_List_specs_3 = { - sizeof(struct E2_E2SM_gNB_X2_actionDefinition__actionParameter_List), - offsetof(struct E2_E2SM_gNB_X2_actionDefinition__actionParameter_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_actionParameter_List_3 = { - "actionParameter-List", - "actionParameter-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_actionParameter_List_tags_3, - sizeof(asn_DEF_E2_actionParameter_List_tags_3) - /sizeof(asn_DEF_E2_actionParameter_List_tags_3[0]) - 1, /* 1 */ - asn_DEF_E2_actionParameter_List_tags_3, /* Same as above */ - sizeof(asn_DEF_E2_actionParameter_List_tags_3) - /sizeof(asn_DEF_E2_actionParameter_List_tags_3[0]), /* 2 */ - { 0, &asn_PER_type_E2_actionParameter_List_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_E2_actionParameter_List_3, - 1, /* Single element */ - &asn_SPC_E2_actionParameter_List_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_actionDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_actionDefinition, style_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_Style_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "style-ID" - }, - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_X2_actionDefinition, actionParameter_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_E2_actionParameter_List_3, - 0, - { 0, &asn_PER_memb_E2_actionParameter_List_constr_3, memb_E2_actionParameter_List_constraint_1 }, - 0, 0, /* No default value */ - "actionParameter-List" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_X2_actionDefinition_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_actionDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* style-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionParameter-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_actionDefinition_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_actionDefinition), - offsetof(struct E2_E2SM_gNB_X2_actionDefinition, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_actionDefinition_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_X2_actionDefinition_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_actionDefinition = { - "E2SM-gNB-X2-actionDefinition", - "E2SM-gNB-X2-actionDefinition", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_actionDefinition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_actionDefinition_1, - 2, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_actionDefinition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-actionDefinition.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-actionDefinition.h deleted file mode 100644 index a4da06f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-actionDefinition.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_actionDefinition_H_ -#define _E2_E2SM_gNB_X2_actionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_Style-ID.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_ActionParameter_Item; - -/* E2_E2SM-gNB-X2-actionDefinition */ -typedef struct E2_E2SM_gNB_X2_actionDefinition { - E2_Style_ID_t style_ID; - struct E2_E2SM_gNB_X2_actionDefinition__actionParameter_List { - A_SEQUENCE_OF(struct E2_ActionParameter_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *actionParameter_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_actionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_actionDefinition; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_actionDefinition_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_actionDefinition_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_actionDefinition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-callProcessID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-callProcessID.c deleted file mode 100644 index ceb49f9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-callProcessID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-callProcessID.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_callProcessID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_callProcessID, callProcess_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_CallProcess_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "callProcess-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_callProcessID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* callProcess-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_callProcessID_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_callProcessID), - offsetof(struct E2_E2SM_gNB_X2_callProcessID, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_callProcessID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_callProcessID = { - "E2SM-gNB-X2-callProcessID", - "E2SM-gNB-X2-callProcessID", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_callProcessID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_callProcessID_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_callProcessID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-callProcessID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-callProcessID.h deleted file mode 100644 index fd0a06e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-callProcessID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_callProcessID_H_ -#define _E2_E2SM_gNB_X2_callProcessID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_CallProcess-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-X2-callProcessID */ -typedef struct E2_E2SM_gNB_X2_callProcessID { - E2_CallProcess_ID_t callProcess_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_callProcessID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_callProcessID; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_callProcessID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_callProcessID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_callProcessID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlHeader.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlHeader.c deleted file mode 100644 index 52a48d0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlHeader.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-controlHeader.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_controlHeader_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_controlHeader, interface_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_Interface_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interface-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_controlHeader, interfaceDirection), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceDirection, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceDirection" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_controlHeader_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* interfaceDirection */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_controlHeader_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_controlHeader), - offsetof(struct E2_E2SM_gNB_X2_controlHeader, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_controlHeader_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_controlHeader = { - "E2SM-gNB-X2-controlHeader", - "E2SM-gNB-X2-controlHeader", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_controlHeader_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_controlHeader_1, - 2, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_controlHeader_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlHeader.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlHeader.h deleted file mode 100644 index bb65235..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlHeader.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_controlHeader_H_ -#define _E2_E2SM_gNB_X2_controlHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_Interface-ID.h" -#include "E2_InterfaceDirection.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-X2-controlHeader */ -typedef struct E2_E2SM_gNB_X2_controlHeader { - E2_Interface_ID_t interface_ID; - E2_InterfaceDirection_t interfaceDirection; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_controlHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_controlHeader; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_controlHeader_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_controlHeader_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_controlHeader_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlMessage.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlMessage.c deleted file mode 100644 index 1f52178..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlMessage.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-controlMessage.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_controlMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_controlMessage, interfaceMessage), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceMessage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_controlMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* interfaceMessage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_controlMessage_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_controlMessage), - offsetof(struct E2_E2SM_gNB_X2_controlMessage, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_controlMessage_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_controlMessage = { - "E2SM-gNB-X2-controlMessage", - "E2SM-gNB-X2-controlMessage", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_controlMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_controlMessage_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_controlMessage_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlMessage.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlMessage.h deleted file mode 100644 index 4380d5b..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-controlMessage.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_controlMessage_H_ -#define _E2_E2SM_gNB_X2_controlMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_InterfaceMessage.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-X2-controlMessage */ -typedef struct E2_E2SM_gNB_X2_controlMessage { - E2_InterfaceMessage_t interfaceMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_controlMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_controlMessage; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_controlMessage_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_controlMessage_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_controlMessage_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-eventTriggerDefinition.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-eventTriggerDefinition.c deleted file mode 100644 index 6198967..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-eventTriggerDefinition.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-eventTriggerDefinition.h" - -#include "E2_InterfaceProtocolIE-Item.h" -static int -memb_E2_interfaceProtocolIE_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 15)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_interfaceProtocolIE_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_interfaceProtocolIE_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_interfaceProtocolIE_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_InterfaceProtocolIE_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_interfaceProtocolIE_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_interfaceProtocolIE_List_specs_5 = { - sizeof(struct E2_E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List), - offsetof(struct E2_E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_interfaceProtocolIE_List_5 = { - "interfaceProtocolIE-List", - "interfaceProtocolIE-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_interfaceProtocolIE_List_tags_5, - sizeof(asn_DEF_E2_interfaceProtocolIE_List_tags_5) - /sizeof(asn_DEF_E2_interfaceProtocolIE_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_interfaceProtocolIE_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_interfaceProtocolIE_List_tags_5) - /sizeof(asn_DEF_E2_interfaceProtocolIE_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_interfaceProtocolIE_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_interfaceProtocolIE_List_5, - 1, /* Single element */ - &asn_SPC_E2_interfaceProtocolIE_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_eventTriggerDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_eventTriggerDefinition, interface_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_Interface_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interface-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_eventTriggerDefinition, interfaceDirection), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceDirection, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceDirection" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_eventTriggerDefinition, interfaceMessageType), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceMessageType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceMessageType" - }, - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_X2_eventTriggerDefinition, interfaceProtocolIE_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_interfaceProtocolIE_List_5, - 0, - { 0, &asn_PER_memb_E2_interfaceProtocolIE_List_constr_5, memb_E2_interfaceProtocolIE_List_constraint_1 }, - 0, 0, /* No default value */ - "interfaceProtocolIE-List" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_X2_eventTriggerDefinition_oms_1[] = { 3 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_eventTriggerDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceDirection */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* interfaceMessageType */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* interfaceProtocolIE-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_eventTriggerDefinition_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_eventTriggerDefinition), - offsetof(struct E2_E2SM_gNB_X2_eventTriggerDefinition, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_eventTriggerDefinition_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_X2_eventTriggerDefinition_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition = { - "E2SM-gNB-X2-eventTriggerDefinition", - "E2SM-gNB-X2-eventTriggerDefinition", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_eventTriggerDefinition_1, - 4, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_eventTriggerDefinition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-eventTriggerDefinition.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-eventTriggerDefinition.h deleted file mode 100644 index 79ca11a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-eventTriggerDefinition.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_eventTriggerDefinition_H_ -#define _E2_E2SM_gNB_X2_eventTriggerDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_Interface-ID.h" -#include "E2_InterfaceDirection.h" -#include "E2_InterfaceMessageType.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_InterfaceProtocolIE_Item; - -/* E2_E2SM-gNB-X2-eventTriggerDefinition */ -typedef struct E2_E2SM_gNB_X2_eventTriggerDefinition { - E2_Interface_ID_t interface_ID; - E2_InterfaceDirection_t interfaceDirection; - E2_InterfaceMessageType_t interfaceMessageType; - struct E2_E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List { - A_SEQUENCE_OF(struct E2_InterfaceProtocolIE_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *interfaceProtocolIE_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_eventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_eventTriggerDefinition_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_eventTriggerDefinition_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_eventTriggerDefinition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationHeader.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationHeader.c deleted file mode 100644 index 826f879..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationHeader.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-indicationHeader.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_indicationHeader_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_indicationHeader, interface_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_Interface_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interface-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_indicationHeader, interfaceDirection), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceDirection, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceDirection" - }, - { ATF_POINTER, 1, offsetof(struct E2_E2SM_gNB_X2_indicationHeader, timestamp), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_TimeStamp, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "timestamp" - }, -}; -static const int asn_MAP_E2_E2SM_gNB_X2_indicationHeader_oms_1[] = { 2 }; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_indicationHeader_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceDirection */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* timestamp */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_indicationHeader_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_indicationHeader), - offsetof(struct E2_E2SM_gNB_X2_indicationHeader, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_indicationHeader_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_E2_E2SM_gNB_X2_indicationHeader_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_indicationHeader = { - "E2SM-gNB-X2-indicationHeader", - "E2SM-gNB-X2-indicationHeader", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationHeader_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_indicationHeader_1, - 3, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_indicationHeader_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationHeader.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationHeader.h deleted file mode 100644 index d00dfcb..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationHeader.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_indicationHeader_H_ -#define _E2_E2SM_gNB_X2_indicationHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_Interface-ID.h" -#include "E2_InterfaceDirection.h" -#include "E2_TimeStamp.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-X2-indicationHeader */ -typedef struct E2_E2SM_gNB_X2_indicationHeader { - E2_Interface_ID_t interface_ID; - E2_InterfaceDirection_t interfaceDirection; - E2_TimeStamp_t *timestamp; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_indicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_indicationHeader; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_indicationHeader_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_indicationHeader_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_indicationHeader_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationMessage.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationMessage.c deleted file mode 100644 index 776335f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationMessage.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_E2SM-gNB-X2-indicationMessage.h" - -asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_indicationMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_E2SM_gNB_X2_indicationMessage, interfaceMessage), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceMessage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_E2SM_gNB_X2_indicationMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* interfaceMessage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_indicationMessage_specs_1 = { - sizeof(struct E2_E2SM_gNB_X2_indicationMessage), - offsetof(struct E2_E2SM_gNB_X2_indicationMessage, _asn_ctx), - asn_MAP_E2_E2SM_gNB_X2_indicationMessage_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_indicationMessage = { - "E2SM-gNB-X2-indicationMessage", - "E2SM-gNB-X2-indicationMessage", - &asn_OP_SEQUENCE, - asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1, - sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1[0]), /* 1 */ - asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1) - /sizeof(asn_DEF_E2_E2SM_gNB_X2_indicationMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_E2SM_gNB_X2_indicationMessage_1, - 1, /* Elements count */ - &asn_SPC_E2_E2SM_gNB_X2_indicationMessage_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationMessage.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationMessage.h deleted file mode 100644 index 95d6b0d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_E2SM-gNB-X2-indicationMessage.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_E2SM_gNB_X2_indicationMessage_H_ -#define _E2_E2SM_gNB_X2_indicationMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_InterfaceMessage.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_E2SM-gNB-X2-indicationMessage */ -typedef struct E2_E2SM_gNB_X2_indicationMessage { - E2_InterfaceMessage_t interfaceMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_E2SM_gNB_X2_indicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_E2SM_gNB_X2_indicationMessage; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_E2SM_gNB_X2_indicationMessage_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_E2SM_gNB_X2_indicationMessage_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_E2SM_gNB_X2_indicationMessage_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ENB-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ENB-ID.c deleted file mode 100644 index 2a6ce42..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ENB-ID.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ENB-ID.h" - -static int -memb_E2_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 28)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_E2_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_E2_macro_eNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_home_eNB_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_E2_ENB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_ENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_ENB_ID, choice.macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_E2_macro_eNB_ID_constr_2, memb_E2_macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ENB_ID, choice.home_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_E2_home_eNB_ID_constr_3, memb_E2_home_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "home-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ENB_ID, choice.short_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_E2_short_Macro_eNB_ID_constr_5, memb_E2_short_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "short-Macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_ENB_ID, choice.long_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_E2_long_Macro_eNB_ID_constr_6, memb_E2_long_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "long-Macro-eNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_ENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_ENB_ID_specs_1 = { - sizeof(struct E2_ENB_ID), - offsetof(struct E2_ENB_ID, _asn_ctx), - offsetof(struct E2_ENB_ID, present), - sizeof(((struct E2_ENB_ID *)0)->present), - asn_MAP_E2_ENB_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_ENB_ID = { - "ENB-ID", - "ENB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_ENB_ID_constr_1, CHOICE_constraint }, - asn_MBR_E2_ENB_ID_1, - 4, /* Elements count */ - &asn_SPC_E2_ENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ENB-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ENB-ID.h deleted file mode 100644 index d195a89..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ENB-ID.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ENB_ID_H_ -#define _E2_ENB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_ENB_ID_PR { - E2_ENB_ID_PR_NOTHING, /* No components present */ - E2_ENB_ID_PR_macro_eNB_ID, - E2_ENB_ID_PR_home_eNB_ID, - /* Extensions may appear below */ - E2_ENB_ID_PR_short_Macro_eNB_ID, - E2_ENB_ID_PR_long_Macro_eNB_ID -} E2_ENB_ID_PR; - -/* E2_ENB-ID */ -typedef struct E2_ENB_ID { - E2_ENB_ID_PR present; - union E2_ENB_ID_u { - BIT_STRING_t macro_eNB_ID; - BIT_STRING_t home_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - BIT_STRING_t short_Macro_eNB_ID; - BIT_STRING_t long_Macro_eNB_ID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_ENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_ENB_ID; -extern asn_CHOICE_specifics_t asn_SPC_E2_ENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_ENB_ID_1[4]; -extern asn_per_constraints_t asn_PER_type_E2_ENB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ENB_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GNB-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GNB-ID.c deleted file mode 100644 index 2604fd6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GNB-ID.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_GNB-ID.h" - -static int -memb_E2_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_E2_gNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_E2_GNB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_GNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_GNB_ID, choice.gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_E2_gNB_ID_constr_2, memb_E2_gNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_GNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_GNB_ID_specs_1 = { - sizeof(struct E2_GNB_ID), - offsetof(struct E2_GNB_ID, _asn_ctx), - offsetof(struct E2_GNB_ID, present), - sizeof(((struct E2_GNB_ID *)0)->present), - asn_MAP_E2_GNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_GNB_ID = { - "GNB-ID", - "GNB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_GNB_ID_constr_1, CHOICE_constraint }, - asn_MBR_E2_GNB_ID_1, - 1, /* Elements count */ - &asn_SPC_E2_GNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GNB-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GNB-ID.h deleted file mode 100644 index 5144a28..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GNB-ID.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_GNB_ID_H_ -#define _E2_GNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_GNB_ID_PR { - E2_GNB_ID_PR_NOTHING, /* No components present */ - E2_GNB_ID_PR_gNB_ID - /* Extensions may appear below */ - -} E2_GNB_ID_PR; - -/* E2_GNB-ID */ -typedef struct E2_GNB_ID { - E2_GNB_ID_PR present; - union E2_GNB_ID_u { - BIT_STRING_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_GNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_GNB_ID; -extern asn_CHOICE_specifics_t asn_SPC_E2_GNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_GNB_ID_1[1]; -extern asn_per_constraints_t asn_PER_type_E2_GNB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_GNB_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalENB-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalENB-ID.c deleted file mode 100644 index b50c251..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalENB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_GlobalENB-ID.h" - -asn_TYPE_member_t asn_MBR_E2_GlobalENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_GlobalENB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_GlobalENB_ID, eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_ENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_GlobalENB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_GlobalENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_GlobalENB_ID_specs_1 = { - sizeof(struct E2_GlobalENB_ID), - offsetof(struct E2_GlobalENB_ID, _asn_ctx), - asn_MAP_E2_GlobalENB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_GlobalENB_ID = { - "GlobalENB-ID", - "GlobalENB-ID", - &asn_OP_SEQUENCE, - asn_DEF_E2_GlobalENB_ID_tags_1, - sizeof(asn_DEF_E2_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_E2_GlobalENB_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_GlobalENB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_E2_GlobalENB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_GlobalENB_ID_1, - 2, /* Elements count */ - &asn_SPC_E2_GlobalENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalENB-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalENB-ID.h deleted file mode 100644 index 214dff3..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalENB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_GlobalENB_ID_H_ -#define _E2_GlobalENB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_PLMN-Identity.h" -#include "E2_ENB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_GlobalENB-ID */ -typedef struct E2_GlobalENB_ID { - E2_PLMN_Identity_t pLMN_Identity; - E2_ENB_ID_t eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_GlobalENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_GlobalENB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_GlobalENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_GlobalENB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_GlobalENB_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalGNB-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalGNB-ID.c deleted file mode 100644 index 9386b97..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalGNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_GlobalGNB-ID.h" - -asn_TYPE_member_t asn_MBR_E2_GlobalGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_GlobalGNB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_GlobalGNB_ID, gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_GNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_GlobalGNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_GlobalGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_GlobalGNB_ID_specs_1 = { - sizeof(struct E2_GlobalGNB_ID), - offsetof(struct E2_GlobalGNB_ID, _asn_ctx), - asn_MAP_E2_GlobalGNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_GlobalGNB_ID = { - "GlobalGNB-ID", - "GlobalGNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_E2_GlobalGNB_ID_tags_1, - sizeof(asn_DEF_E2_GlobalGNB_ID_tags_1) - /sizeof(asn_DEF_E2_GlobalGNB_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_GlobalGNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_GlobalGNB_ID_tags_1) - /sizeof(asn_DEF_E2_GlobalGNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_GlobalGNB_ID_1, - 2, /* Elements count */ - &asn_SPC_E2_GlobalGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalGNB-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalGNB-ID.h deleted file mode 100644 index 2241f3a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_GlobalGNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_GlobalGNB_ID_H_ -#define _E2_GlobalGNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_PLMN-Identity.h" -#include "E2_GNB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_GlobalGNB-ID */ -typedef struct E2_GlobalGNB_ID { - E2_PLMN_Identity_t pLMN_Identity; - E2_GNB_ID_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_GlobalGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_GlobalGNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_GlobalGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_GlobalGNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_GlobalGNB_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Interface-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Interface-ID.c deleted file mode 100644 index 4cc9b0c..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Interface-ID.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_Interface-ID.h" - -asn_per_constraints_t asn_PER_type_E2_Interface_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_Interface_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_Interface_ID, choice.global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_Interface_ID, choice.global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_GlobalGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_Interface_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-gNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_Interface_ID_specs_1 = { - sizeof(struct E2_Interface_ID), - offsetof(struct E2_Interface_ID, _asn_ctx), - offsetof(struct E2_Interface_ID, present), - sizeof(((struct E2_Interface_ID *)0)->present), - asn_MAP_E2_Interface_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_Interface_ID = { - "Interface-ID", - "Interface-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_Interface_ID_constr_1, CHOICE_constraint }, - asn_MBR_E2_Interface_ID_1, - 2, /* Elements count */ - &asn_SPC_E2_Interface_ID_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Interface-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Interface-ID.h deleted file mode 100644 index 9ff1b40..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Interface-ID.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_Interface_ID_H_ -#define _E2_Interface_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_GlobalENB-ID.h" -#include "E2_GlobalGNB-ID.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_Interface_ID_PR { - E2_Interface_ID_PR_NOTHING, /* No components present */ - E2_Interface_ID_PR_global_eNB_ID, - E2_Interface_ID_PR_global_gNB_ID - /* Extensions may appear below */ - -} E2_Interface_ID_PR; - -/* E2_Interface-ID */ -typedef struct E2_Interface_ID { - E2_Interface_ID_PR present; - union E2_Interface_ID_u { - E2_GlobalENB_ID_t global_eNB_ID; - E2_GlobalGNB_ID_t global_gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_Interface_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_Interface_ID; -extern asn_CHOICE_specifics_t asn_SPC_E2_Interface_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_Interface_ID_1[2]; -extern asn_per_constraints_t asn_PER_type_E2_Interface_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_Interface_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceDirection.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceDirection.c deleted file mode 100644 index caf2543..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceDirection.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceDirection.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_InterfaceDirection_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_InterfaceDirection_value2enum_1[] = { - { 0, 8, "incoming" }, - { 1, 8, "outgoing" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_InterfaceDirection_enum2value_1[] = { - 0, /* incoming(0) */ - 1 /* outgoing(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_InterfaceDirection_specs_1 = { - asn_MAP_E2_InterfaceDirection_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_InterfaceDirection_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_InterfaceDirection_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceDirection = { - "InterfaceDirection", - "InterfaceDirection", - &asn_OP_NativeEnumerated, - asn_DEF_E2_InterfaceDirection_tags_1, - sizeof(asn_DEF_E2_InterfaceDirection_tags_1) - /sizeof(asn_DEF_E2_InterfaceDirection_tags_1[0]), /* 1 */ - asn_DEF_E2_InterfaceDirection_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_InterfaceDirection_tags_1) - /sizeof(asn_DEF_E2_InterfaceDirection_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_InterfaceDirection_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_InterfaceDirection_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceDirection.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceDirection.h deleted file mode 100644 index b26e7a6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceDirection.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceDirection_H_ -#define _E2_InterfaceDirection_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_InterfaceDirection { - E2_InterfaceDirection_incoming = 0, - E2_InterfaceDirection_outgoing = 1 - /* - * Enumeration is extensible - */ -} e_E2_InterfaceDirection; - -/* E2_InterfaceDirection */ -typedef long E2_InterfaceDirection_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_InterfaceDirection_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceDirection; -extern const asn_INTEGER_specifics_t asn_SPC_InterfaceDirection_specs_1; -asn_struct_free_f InterfaceDirection_free; -asn_struct_print_f InterfaceDirection_print; -asn_constr_check_f InterfaceDirection_constraint; -ber_type_decoder_f InterfaceDirection_decode_ber; -der_type_encoder_f InterfaceDirection_encode_der; -xer_type_decoder_f InterfaceDirection_decode_xer; -xer_type_encoder_f InterfaceDirection_encode_xer; -per_type_decoder_f InterfaceDirection_decode_uper; -per_type_encoder_f InterfaceDirection_encode_uper; -per_type_decoder_f InterfaceDirection_decode_aper; -per_type_encoder_f InterfaceDirection_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceDirection_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessage.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessage.c deleted file mode 100644 index aa3f5de..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_InterfaceMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceMessage = { - "InterfaceMessage", - "InterfaceMessage", - &asn_OP_OCTET_STRING, - asn_DEF_E2_InterfaceMessage_tags_1, - sizeof(asn_DEF_E2_InterfaceMessage_tags_1) - /sizeof(asn_DEF_E2_InterfaceMessage_tags_1[0]), /* 1 */ - asn_DEF_E2_InterfaceMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_InterfaceMessage_tags_1) - /sizeof(asn_DEF_E2_InterfaceMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessage.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessage.h deleted file mode 100644 index 5b931cf..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessage.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceMessage_H_ -#define _E2_InterfaceMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_InterfaceMessage */ -typedef OCTET_STRING_t E2_InterfaceMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceMessage; -asn_struct_free_f E2_InterfaceMessage_free; -asn_struct_print_f E2_InterfaceMessage_print; -asn_constr_check_f E2_InterfaceMessage_constraint; -ber_type_decoder_f E2_InterfaceMessage_decode_ber; -der_type_encoder_f E2_InterfaceMessage_encode_der; -xer_type_decoder_f E2_InterfaceMessage_decode_xer; -xer_type_encoder_f E2_InterfaceMessage_encode_xer; -per_type_decoder_f E2_InterfaceMessage_decode_uper; -per_type_encoder_f E2_InterfaceMessage_encode_uper; -per_type_decoder_f E2_InterfaceMessage_decode_aper; -per_type_encoder_f E2_InterfaceMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceMessage_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessageType.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessageType.c deleted file mode 100644 index e3042ce..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessageType.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceMessageType.h" - -asn_TYPE_member_t asn_MBR_E2_InterfaceMessageType_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceMessageType, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_ProcedureCode, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceMessageType, typeOfMessage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_TypeOfMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "typeOfMessage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_InterfaceMessageType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_InterfaceMessageType_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeOfMessage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_InterfaceMessageType_specs_1 = { - sizeof(struct E2_InterfaceMessageType), - offsetof(struct E2_InterfaceMessageType, _asn_ctx), - asn_MAP_E2_InterfaceMessageType_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceMessageType = { - "InterfaceMessageType", - "InterfaceMessageType", - &asn_OP_SEQUENCE, - asn_DEF_E2_InterfaceMessageType_tags_1, - sizeof(asn_DEF_E2_InterfaceMessageType_tags_1) - /sizeof(asn_DEF_E2_InterfaceMessageType_tags_1[0]), /* 1 */ - asn_DEF_E2_InterfaceMessageType_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_InterfaceMessageType_tags_1) - /sizeof(asn_DEF_E2_InterfaceMessageType_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_InterfaceMessageType_1, - 2, /* Elements count */ - &asn_SPC_E2_InterfaceMessageType_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessageType.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessageType.h deleted file mode 100644 index 2a29d2d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceMessageType.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceMessageType_H_ -#define _E2_InterfaceMessageType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_ProcedureCode.h" -#include "E2_TypeOfMessage.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_InterfaceMessageType */ -typedef struct E2_InterfaceMessageType { - E2_ProcedureCode_t procedureCode; - E2_TypeOfMessage_t typeOfMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_InterfaceMessageType_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceMessageType; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_InterfaceMessageType_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_InterfaceMessageType_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceMessageType_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-ID.c deleted file mode 100644 index 1a9e2cf..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceProtocolIE-ID.h" - -int -E2_InterfaceProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using E2_ProtocolIE_ID, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_InterfaceProtocolIE_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_InterfaceProtocolIE_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_ID = { - "InterfaceProtocolIE-ID", - "InterfaceProtocolIE-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_InterfaceProtocolIE_ID_tags_1, - sizeof(asn_DEF_E2_InterfaceProtocolIE_ID_tags_1) - /sizeof(asn_DEF_E2_InterfaceProtocolIE_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_InterfaceProtocolIE_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_InterfaceProtocolIE_ID_tags_1) - /sizeof(asn_DEF_E2_InterfaceProtocolIE_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_InterfaceProtocolIE_ID_constr_1, E2_InterfaceProtocolIE_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-ID.h deleted file mode 100644 index aaec6b9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceProtocolIE_ID_H_ -#define _E2_InterfaceProtocolIE_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_ProtocolIE-ID.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_InterfaceProtocolIE-ID */ -typedef E2_ProtocolIE_ID_t E2_InterfaceProtocolIE_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_InterfaceProtocolIE_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_ID; -asn_struct_free_f E2_InterfaceProtocolIE_ID_free; -asn_struct_print_f E2_InterfaceProtocolIE_ID_print; -asn_constr_check_f E2_InterfaceProtocolIE_ID_constraint; -ber_type_decoder_f E2_InterfaceProtocolIE_ID_decode_ber; -der_type_encoder_f E2_InterfaceProtocolIE_ID_encode_der; -xer_type_decoder_f E2_InterfaceProtocolIE_ID_decode_xer; -xer_type_encoder_f E2_InterfaceProtocolIE_ID_encode_xer; -per_type_decoder_f E2_InterfaceProtocolIE_ID_decode_uper; -per_type_encoder_f E2_InterfaceProtocolIE_ID_encode_uper; -per_type_decoder_f E2_InterfaceProtocolIE_ID_decode_aper; -per_type_encoder_f E2_InterfaceProtocolIE_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceProtocolIE_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Item.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Item.c deleted file mode 100644 index a2afa07..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceProtocolIE-Item.h" - -asn_TYPE_member_t asn_MBR_E2_InterfaceProtocolIE_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Item, interfaceProtocolIE_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceProtocolIE_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceProtocolIE-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Item, interfaceProtocolIE_Test), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_InterfaceProtocolIE_Test, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceProtocolIE-Test" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Item, interfaceProtocolIE_Value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_InterfaceProtocolIE_Value, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interfaceProtocolIE-Value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_InterfaceProtocolIE_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_InterfaceProtocolIE_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interfaceProtocolIE-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceProtocolIE-Test */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* interfaceProtocolIE-Value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_InterfaceProtocolIE_Item_specs_1 = { - sizeof(struct E2_InterfaceProtocolIE_Item), - offsetof(struct E2_InterfaceProtocolIE_Item, _asn_ctx), - asn_MAP_E2_InterfaceProtocolIE_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_Item = { - "InterfaceProtocolIE-Item", - "InterfaceProtocolIE-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_InterfaceProtocolIE_Item_tags_1, - sizeof(asn_DEF_E2_InterfaceProtocolIE_Item_tags_1) - /sizeof(asn_DEF_E2_InterfaceProtocolIE_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_InterfaceProtocolIE_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_InterfaceProtocolIE_Item_tags_1) - /sizeof(asn_DEF_E2_InterfaceProtocolIE_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_InterfaceProtocolIE_Item_1, - 3, /* Elements count */ - &asn_SPC_E2_InterfaceProtocolIE_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Item.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Item.h deleted file mode 100644 index d172331..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceProtocolIE_Item_H_ -#define _E2_InterfaceProtocolIE_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_InterfaceProtocolIE-ID.h" -#include "E2_InterfaceProtocolIE-Test.h" -#include "E2_InterfaceProtocolIE-Value.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_InterfaceProtocolIE-Item */ -typedef struct E2_InterfaceProtocolIE_Item { - E2_InterfaceProtocolIE_ID_t interfaceProtocolIE_ID; - E2_InterfaceProtocolIE_Test_t interfaceProtocolIE_Test; - E2_InterfaceProtocolIE_Value_t interfaceProtocolIE_Value; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_InterfaceProtocolIE_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_InterfaceProtocolIE_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_InterfaceProtocolIE_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceProtocolIE_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Test.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Test.c deleted file mode 100644 index 0ff7aa6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Test.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceProtocolIE-Test.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_InterfaceProtocolIE_Test_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_InterfaceProtocolIE_Test_value2enum_1[] = { - { 0, 5, "equal" }, - { 1, 11, "greaterthan" }, - { 2, 8, "lessthan" }, - { 3, 8, "contains" }, - { 4, 7, "present" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_InterfaceProtocolIE_Test_enum2value_1[] = { - 3, /* contains(3) */ - 0, /* equal(0) */ - 1, /* greaterthan(1) */ - 2, /* lessthan(2) */ - 4 /* present(4) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_InterfaceProtocolIE_Test_specs_1 = { - asn_MAP_E2_InterfaceProtocolIE_Test_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_InterfaceProtocolIE_Test_enum2value_1, /* N => "tag"; sorted by N */ - 5, /* Number of elements in the maps */ - 6, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_InterfaceProtocolIE_Test_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_Test = { - "InterfaceProtocolIE-Test", - "InterfaceProtocolIE-Test", - &asn_OP_NativeEnumerated, - asn_DEF_E2_InterfaceProtocolIE_Test_tags_1, - sizeof(asn_DEF_E2_InterfaceProtocolIE_Test_tags_1) - /sizeof(asn_DEF_E2_InterfaceProtocolIE_Test_tags_1[0]), /* 1 */ - asn_DEF_E2_InterfaceProtocolIE_Test_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_InterfaceProtocolIE_Test_tags_1) - /sizeof(asn_DEF_E2_InterfaceProtocolIE_Test_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_InterfaceProtocolIE_Test_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_InterfaceProtocolIE_Test_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Test.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Test.h deleted file mode 100644 index 2c42dd9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Test.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceProtocolIE_Test_H_ -#define _E2_InterfaceProtocolIE_Test_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_InterfaceProtocolIE_Test { - E2_InterfaceProtocolIE_Test_equal = 0, - E2_InterfaceProtocolIE_Test_greaterthan = 1, - E2_InterfaceProtocolIE_Test_lessthan = 2, - E2_InterfaceProtocolIE_Test_contains = 3, - E2_InterfaceProtocolIE_Test_present = 4 - /* - * Enumeration is extensible - */ -} e_E2_InterfaceProtocolIE_Test; - -/* E2_InterfaceProtocolIE-Test */ -typedef long E2_InterfaceProtocolIE_Test_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_InterfaceProtocolIE_Test_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_Test; -extern const asn_INTEGER_specifics_t asn_SPC_InterfaceProtocolIE_Test_specs_1; -asn_struct_free_f InterfaceProtocolIE_Test_free; -asn_struct_print_f InterfaceProtocolIE_Test_print; -asn_constr_check_f InterfaceProtocolIE_Test_constraint; -ber_type_decoder_f InterfaceProtocolIE_Test_decode_ber; -der_type_encoder_f InterfaceProtocolIE_Test_encode_der; -xer_type_decoder_f InterfaceProtocolIE_Test_decode_xer; -xer_type_encoder_f InterfaceProtocolIE_Test_encode_xer; -per_type_decoder_f InterfaceProtocolIE_Test_decode_uper; -per_type_encoder_f InterfaceProtocolIE_Test_encode_uper; -per_type_decoder_f InterfaceProtocolIE_Test_decode_aper; -per_type_encoder_f InterfaceProtocolIE_Test_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceProtocolIE_Test_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Value.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Value.c deleted file mode 100644 index c46e90a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Value.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_InterfaceProtocolIE-Value.h" - -asn_per_constraints_t asn_PER_type_E2_InterfaceProtocolIE_Value_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_InterfaceProtocolIE_Value_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Value, choice.valueInt), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueInt" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Value, choice.valueEnum), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueEnum" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Value, choice.valueBool), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BOOLEAN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBool" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Value, choice.valueBitS), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBitS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_InterfaceProtocolIE_Value, choice.valueOctS), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueOctS" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_InterfaceProtocolIE_Value_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* valueOctS */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_InterfaceProtocolIE_Value_specs_1 = { - sizeof(struct E2_InterfaceProtocolIE_Value), - offsetof(struct E2_InterfaceProtocolIE_Value, _asn_ctx), - offsetof(struct E2_InterfaceProtocolIE_Value, present), - sizeof(((struct E2_InterfaceProtocolIE_Value *)0)->present), - asn_MAP_E2_InterfaceProtocolIE_Value_tag2el_1, - 5, /* Count of tags in the map */ - 0, 0, - 5 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_Value = { - "InterfaceProtocolIE-Value", - "InterfaceProtocolIE-Value", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_InterfaceProtocolIE_Value_constr_1, CHOICE_constraint }, - asn_MBR_E2_InterfaceProtocolIE_Value_1, - 5, /* Elements count */ - &asn_SPC_E2_InterfaceProtocolIE_Value_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Value.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Value.h deleted file mode 100644 index 3a40e0a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_InterfaceProtocolIE-Value.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_InterfaceProtocolIE_Value_H_ -#define _E2_InterfaceProtocolIE_Value_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "BOOLEAN.h" -#include "BIT_STRING.h" -#include "OCTET_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_InterfaceProtocolIE_Value_PR { - E2_InterfaceProtocolIE_Value_PR_NOTHING, /* No components present */ - E2_InterfaceProtocolIE_Value_PR_valueInt, - E2_InterfaceProtocolIE_Value_PR_valueEnum, - E2_InterfaceProtocolIE_Value_PR_valueBool, - E2_InterfaceProtocolIE_Value_PR_valueBitS, - E2_InterfaceProtocolIE_Value_PR_valueOctS - /* Extensions may appear below */ - -} E2_InterfaceProtocolIE_Value_PR; - -/* E2_InterfaceProtocolIE-Value */ -typedef struct E2_InterfaceProtocolIE_Value { - E2_InterfaceProtocolIE_Value_PR present; - union E2_InterfaceProtocolIE_Value_u { - long valueInt; - long valueEnum; - BOOLEAN_t valueBool; - BIT_STRING_t valueBitS; - OCTET_STRING_t valueOctS; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_InterfaceProtocolIE_Value_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_InterfaceProtocolIE_Value; -extern asn_CHOICE_specifics_t asn_SPC_E2_InterfaceProtocolIE_Value_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_InterfaceProtocolIE_Value_1[5]; -extern asn_per_constraints_t asn_PER_type_E2_InterfaceProtocolIE_Value_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_InterfaceProtocolIE_Value_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_PLMN-Identity.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_PLMN-Identity.c deleted file mode 100644 index 90d16a4..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_PLMN-Identity.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_PLMN-Identity.h" - -int -E2_PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_PLMN_Identity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_PLMN_Identity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_PLMN_Identity = { - "PLMN-Identity", - "PLMN-Identity", - &asn_OP_OCTET_STRING, - asn_DEF_E2_PLMN_Identity_tags_1, - sizeof(asn_DEF_E2_PLMN_Identity_tags_1) - /sizeof(asn_DEF_E2_PLMN_Identity_tags_1[0]), /* 1 */ - asn_DEF_E2_PLMN_Identity_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_PLMN_Identity_tags_1) - /sizeof(asn_DEF_E2_PLMN_Identity_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_PLMN_Identity_constr_1, E2_PLMN_Identity_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_PLMN-Identity.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_PLMN-Identity.h deleted file mode 100644 index d4d11b0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_PLMN-Identity.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_PLMN_Identity_H_ -#define _E2_PLMN_Identity_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_PLMN-Identity */ -typedef OCTET_STRING_t E2_PLMN_Identity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_PLMN_Identity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_PLMN_Identity; -asn_struct_free_f E2_PLMN_Identity_free; -asn_struct_print_f E2_PLMN_Identity_print; -asn_constr_check_f E2_PLMN_Identity_constraint; -ber_type_decoder_f E2_PLMN_Identity_decode_ber; -der_type_encoder_f E2_PLMN_Identity_encode_der; -xer_type_decoder_f E2_PLMN_Identity_decode_xer; -xer_type_encoder_f E2_PLMN_Identity_encode_xer; -per_type_decoder_f E2_PLMN_Identity_decode_uper; -per_type_encoder_f E2_PLMN_Identity_encode_uper; -per_type_decoder_f E2_PLMN_Identity_decode_aper; -per_type_encoder_f E2_PLMN_Identity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_PLMN_Identity_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Presence.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Presence.c deleted file mode 100644 index 50d73a7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Presence.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_Presence.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_E2_Presence_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_Presence_value2enum_1[] = { - { 0, 8, "optional" }, - { 1, 11, "conditional" }, - { 2, 9, "mandatory" } -}; -static const unsigned int asn_MAP_E2_Presence_enum2value_1[] = { - 1, /* conditional(1) */ - 2, /* mandatory(2) */ - 0 /* optional(0) */ -}; -static const asn_INTEGER_specifics_t asn_SPC_E2_Presence_specs_1 = { - asn_MAP_E2_Presence_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_Presence_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_Presence_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_Presence = { - "Presence", - "Presence", - &asn_OP_NativeEnumerated, - asn_DEF_E2_Presence_tags_1, - sizeof(asn_DEF_E2_Presence_tags_1) - /sizeof(asn_DEF_E2_Presence_tags_1[0]), /* 1 */ - asn_DEF_E2_Presence_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_Presence_tags_1) - /sizeof(asn_DEF_E2_Presence_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_Presence_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_Presence_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Presence.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Presence.h deleted file mode 100644 index 81633c1..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Presence.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_Presence_H_ -#define _E2_Presence_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_Presence { - E2_Presence_optional = 0, - E2_Presence_conditional = 1, - E2_Presence_mandatory = 2 -} e_E2_Presence; - -/* E2_Presence */ -typedef long E2_Presence_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_Presence; -asn_struct_free_f E2_Presence_free; -asn_struct_print_f E2_Presence_print; -asn_constr_check_f E2_Presence_constraint; -ber_type_decoder_f E2_Presence_decode_ber; -der_type_encoder_f E2_Presence_encode_der; -xer_type_decoder_f E2_Presence_decode_xer; -xer_type_encoder_f E2_Presence_encode_xer; -per_type_decoder_f E2_Presence_decode_uper; -per_type_encoder_f E2_Presence_encode_uper; -per_type_decoder_f E2_Presence_decode_aper; -per_type_encoder_f E2_Presence_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_Presence_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProcedureCode.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProcedureCode.c deleted file mode 100644 index b24de76..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProcedureCode.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ProcedureCode.h" - -int -E2_ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_ProcedureCode_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_ProcedureCode_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_ProcedureCode = { - "ProcedureCode", - "ProcedureCode", - &asn_OP_NativeInteger, - asn_DEF_E2_ProcedureCode_tags_1, - sizeof(asn_DEF_E2_ProcedureCode_tags_1) - /sizeof(asn_DEF_E2_ProcedureCode_tags_1[0]), /* 1 */ - asn_DEF_E2_ProcedureCode_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_ProcedureCode_tags_1) - /sizeof(asn_DEF_E2_ProcedureCode_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_ProcedureCode_constr_1, E2_ProcedureCode_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProcedureCode.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProcedureCode.h deleted file mode 100644 index 62fde94..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProcedureCode.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ProcedureCode_H_ -#define _E2_ProcedureCode_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_ProcedureCode */ -typedef long E2_ProcedureCode_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_ProcedureCode_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_ProcedureCode; -asn_struct_free_f E2_ProcedureCode_free; -asn_struct_print_f E2_ProcedureCode_print; -asn_constr_check_f E2_ProcedureCode_constraint; -ber_type_decoder_f E2_ProcedureCode_decode_ber; -der_type_encoder_f E2_ProcedureCode_encode_der; -xer_type_decoder_f E2_ProcedureCode_decode_xer; -xer_type_encoder_f E2_ProcedureCode_encode_xer; -per_type_decoder_f E2_ProcedureCode_decode_uper; -per_type_encoder_f E2_ProcedureCode_encode_uper; -per_type_decoder_f E2_ProcedureCode_decode_aper; -per_type_encoder_f E2_ProcedureCode_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ProcedureCode_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProtocolIE-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProtocolIE-ID.c deleted file mode 100644 index c39285d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProtocolIE-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_ProtocolIE-ID.h" - -int -E2_ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_ProtocolIE_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_ProtocolIE_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_ProtocolIE_ID = { - "ProtocolIE-ID", - "ProtocolIE-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_ProtocolIE_ID_tags_1, - sizeof(asn_DEF_E2_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_E2_ProtocolIE_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_ProtocolIE_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_E2_ProtocolIE_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_ProtocolIE_ID_constr_1, E2_ProtocolIE_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProtocolIE-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProtocolIE-ID.h deleted file mode 100644 index 0906d4b..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_ProtocolIE-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_ProtocolIE_ID_H_ -#define _E2_ProtocolIE_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_ProtocolIE-ID */ -typedef long E2_ProtocolIE_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_ProtocolIE_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_ProtocolIE_ID; -asn_struct_free_f E2_ProtocolIE_ID_free; -asn_struct_print_f E2_ProtocolIE_ID_print; -asn_constr_check_f E2_ProtocolIE_ID_constraint; -ber_type_decoder_f E2_ProtocolIE_ID_decode_ber; -der_type_encoder_f E2_ProtocolIE_ID_encode_der; -xer_type_decoder_f E2_ProtocolIE_ID_decode_xer; -xer_type_encoder_f E2_ProtocolIE_ID_encode_xer; -per_type_decoder_f E2_ProtocolIE_ID_decode_uper; -per_type_encoder_f E2_ProtocolIE_ID_encode_uper; -per_type_decoder_f E2_ProtocolIE_ID_decode_aper; -per_type_encoder_f E2_ProtocolIE_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ProtocolIE_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-ID.c deleted file mode 100644 index d3926f8..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANParameter-ID.h" - -int -E2_RANParameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANParameter_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_RANParameter_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_ID = { - "RANParameter-ID", - "RANParameter-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_RANParameter_ID_tags_1, - sizeof(asn_DEF_E2_RANParameter_ID_tags_1) - /sizeof(asn_DEF_E2_RANParameter_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_RANParameter_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANParameter_ID_tags_1) - /sizeof(asn_DEF_E2_RANParameter_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANParameter_ID_constr_1, E2_RANParameter_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-ID.h deleted file mode 100644 index 9dde2a6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANParameter_ID_H_ -#define _E2_RANParameter_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANParameter-ID */ -typedef long E2_RANParameter_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANParameter_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_ID; -asn_struct_free_f E2_RANParameter_ID_free; -asn_struct_print_f E2_RANParameter_ID_print; -asn_constr_check_f E2_RANParameter_ID_constraint; -ber_type_decoder_f E2_RANParameter_ID_decode_ber; -der_type_encoder_f E2_RANParameter_ID_encode_der; -xer_type_decoder_f E2_RANParameter_ID_decode_xer; -xer_type_encoder_f E2_RANParameter_ID_encode_xer; -per_type_decoder_f E2_RANParameter_ID_decode_uper; -per_type_encoder_f E2_RANParameter_ID_encode_uper; -per_type_decoder_f E2_RANParameter_ID_decode_aper; -per_type_encoder_f E2_RANParameter_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANParameter_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Item.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Item.c deleted file mode 100644 index 40aac3e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANParameter-Item.h" - -asn_TYPE_member_t asn_MBR_E2_RANParameter_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Item, ranParameter_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Item, ranParameter_Value), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_Value, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RANParameter_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANParameter_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-Value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANParameter_Item_specs_1 = { - sizeof(struct E2_RANParameter_Item), - offsetof(struct E2_RANParameter_Item, _asn_ctx), - asn_MAP_E2_RANParameter_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Item = { - "RANParameter-Item", - "RANParameter-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANParameter_Item_tags_1, - sizeof(asn_DEF_E2_RANParameter_Item_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_RANParameter_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANParameter_Item_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANParameter_Item_1, - 2, /* Elements count */ - &asn_SPC_E2_RANParameter_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Item.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Item.h deleted file mode 100644 index b427828..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANParameter_Item_H_ -#define _E2_RANParameter_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANParameter-ID.h" -#include "E2_RANParameter-Value.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANParameter-Item */ -typedef struct E2_RANParameter_Item { - E2_RANParameter_ID_t ranParameter_ID; - E2_RANParameter_Value_t ranParameter_Value; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANParameter_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANParameter_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANParameter_Item_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANParameter_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Name.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Name.c deleted file mode 100644 index f17a7f8..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Name.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANParameter-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -E2_RANParameter_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_RANParameter_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_E2_RANParameter_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANParameter_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_RANParameter_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_RANParameter_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_RANParameter_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Name = { - "RANParameter-Name", - "RANParameter-Name", - &asn_OP_PrintableString, - asn_DEF_E2_RANParameter_Name_tags_1, - sizeof(asn_DEF_E2_RANParameter_Name_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Name_tags_1[0]), /* 1 */ - asn_DEF_E2_RANParameter_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANParameter_Name_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Name_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANParameter_Name_constr_1, E2_RANParameter_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Name.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Name.h deleted file mode 100644 index ec8deb6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Name.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANParameter_Name_H_ -#define _E2_RANParameter_Name_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANParameter-Name */ -typedef PrintableString_t E2_RANParameter_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANParameter_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Name; -asn_struct_free_f E2_RANParameter_Name_free; -asn_struct_print_f E2_RANParameter_Name_print; -asn_constr_check_f E2_RANParameter_Name_constraint; -ber_type_decoder_f E2_RANParameter_Name_decode_ber; -der_type_encoder_f E2_RANParameter_Name_encode_der; -xer_type_decoder_f E2_RANParameter_Name_decode_xer; -xer_type_encoder_f E2_RANParameter_Name_encode_xer; -per_type_decoder_f E2_RANParameter_Name_decode_uper; -per_type_encoder_f E2_RANParameter_Name_encode_uper; -per_type_decoder_f E2_RANParameter_Name_decode_aper; -per_type_encoder_f E2_RANParameter_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANParameter_Name_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Test.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Test.c deleted file mode 100644 index 717c726..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Test.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANParameter-Test.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANParameter_Test_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_RANParameter_Test_value2enum_1[] = { - { 0, 5, "equal" }, - { 1, 11, "greaterthan" }, - { 2, 8, "lessthan" }, - { 3, 8, "contains" }, - { 4, 7, "present" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_RANParameter_Test_enum2value_1[] = { - 3, /* contains(3) */ - 0, /* equal(0) */ - 1, /* greaterthan(1) */ - 2, /* lessthan(2) */ - 4 /* present(4) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_RANParameter_Test_specs_1 = { - asn_MAP_E2_RANParameter_Test_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_RANParameter_Test_enum2value_1, /* N => "tag"; sorted by N */ - 5, /* Number of elements in the maps */ - 6, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_RANParameter_Test_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Test = { - "RANParameter-Test", - "RANParameter-Test", - &asn_OP_NativeEnumerated, - asn_DEF_E2_RANParameter_Test_tags_1, - sizeof(asn_DEF_E2_RANParameter_Test_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Test_tags_1[0]), /* 1 */ - asn_DEF_E2_RANParameter_Test_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANParameter_Test_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Test_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANParameter_Test_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_RANParameter_Test_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Test.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Test.h deleted file mode 100644 index 1e4527e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Test.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANParameter_Test_H_ -#define _E2_RANParameter_Test_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_RANParameter_Test { - E2_RANParameter_Test_equal = 0, - E2_RANParameter_Test_greaterthan = 1, - E2_RANParameter_Test_lessthan = 2, - E2_RANParameter_Test_contains = 3, - E2_RANParameter_Test_present = 4 - /* - * Enumeration is extensible - */ -} e_E2_RANParameter_Test; - -/* E2_RANParameter-Test */ -typedef long E2_RANParameter_Test_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANParameter_Test_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Test; -extern const asn_INTEGER_specifics_t asn_SPC_RANParameter_Test_specs_1; -asn_struct_free_f RANParameter_Test_free; -asn_struct_print_f RANParameter_Test_print; -asn_constr_check_f RANParameter_Test_constraint; -ber_type_decoder_f RANParameter_Test_decode_ber; -der_type_encoder_f RANParameter_Test_encode_der; -xer_type_decoder_f RANParameter_Test_decode_xer; -xer_type_encoder_f RANParameter_Test_encode_xer; -per_type_decoder_f RANParameter_Test_decode_uper; -per_type_encoder_f RANParameter_Test_encode_uper; -per_type_decoder_f RANParameter_Test_decode_aper; -per_type_encoder_f RANParameter_Test_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANParameter_Test_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Type.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Type.c deleted file mode 100644 index 9f0f3a9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Type.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANParameter-Type.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RANParameter_Type_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_RANParameter_Type_value2enum_1[] = { - { 0, 7, "integer" }, - { 1, 10, "enumerated" }, - { 2, 7, "boolean" }, - { 3, 10, "bit-string" }, - { 4, 12, "octet-string" }, - { 5, 16, "printable-string" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2_RANParameter_Type_enum2value_1[] = { - 3, /* bit-string(3) */ - 2, /* boolean(2) */ - 1, /* enumerated(1) */ - 0, /* integer(0) */ - 4, /* octet-string(4) */ - 5 /* printable-string(5) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_RANParameter_Type_specs_1 = { - asn_MAP_E2_RANParameter_Type_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_RANParameter_Type_enum2value_1, /* N => "tag"; sorted by N */ - 6, /* Number of elements in the maps */ - 7, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_RANParameter_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Type = { - "RANParameter-Type", - "RANParameter-Type", - &asn_OP_NativeEnumerated, - asn_DEF_E2_RANParameter_Type_tags_1, - sizeof(asn_DEF_E2_RANParameter_Type_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Type_tags_1[0]), /* 1 */ - asn_DEF_E2_RANParameter_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANParameter_Type_tags_1) - /sizeof(asn_DEF_E2_RANParameter_Type_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RANParameter_Type_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_RANParameter_Type_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Type.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Type.h deleted file mode 100644 index 0036a71..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Type.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANParameter_Type_H_ -#define _E2_RANParameter_Type_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_RANParameter_Type { - E2_RANParameter_Type_integer = 0, - E2_RANParameter_Type_enumerated = 1, - E2_RANParameter_Type_boolean = 2, - E2_RANParameter_Type_bit_string = 3, - E2_RANParameter_Type_octet_string = 4, - E2_RANParameter_Type_printable_string = 5 - /* - * Enumeration is extensible - */ -} e_E2_RANParameter_Type; - -/* E2_RANParameter-Type */ -typedef long E2_RANParameter_Type_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RANParameter_Type_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Type; -extern const asn_INTEGER_specifics_t asn_SPC_RANParameter_Type_specs_1; -asn_struct_free_f RANParameter_Type_free; -asn_struct_print_f RANParameter_Type_print; -asn_constr_check_f RANParameter_Type_constraint; -ber_type_decoder_f RANParameter_Type_decode_ber; -der_type_encoder_f RANParameter_Type_encode_der; -xer_type_decoder_f RANParameter_Type_decode_xer; -xer_type_encoder_f RANParameter_Type_encode_xer; -per_type_decoder_f RANParameter_Type_decode_uper; -per_type_encoder_f RANParameter_Type_encode_uper; -per_type_decoder_f RANParameter_Type_decode_aper; -per_type_encoder_f RANParameter_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANParameter_Type_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Value.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Value.c deleted file mode 100644 index 946e262..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Value.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANParameter-Value.h" - -asn_per_constraints_t asn_PER_type_E2_RANParameter_Value_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2_RANParameter_Value_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Value, choice.valueInt), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueInt" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Value, choice.valueEnum), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueEnum" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Value, choice.valueBool), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BOOLEAN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBool" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Value, choice.valueBitS), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueBitS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Value, choice.valueOctS), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valueOctS" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANParameter_Value, choice.valuePrtS), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "valuePrtS" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANParameter_Value_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrtS */ -}; -asn_CHOICE_specifics_t asn_SPC_E2_RANParameter_Value_specs_1 = { - sizeof(struct E2_RANParameter_Value), - offsetof(struct E2_RANParameter_Value, _asn_ctx), - offsetof(struct E2_RANParameter_Value, present), - sizeof(((struct E2_RANParameter_Value *)0)->present), - asn_MAP_E2_RANParameter_Value_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, - 6 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Value = { - "RANParameter-Value", - "RANParameter-Value", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2_RANParameter_Value_constr_1, CHOICE_constraint }, - asn_MBR_E2_RANParameter_Value_1, - 6, /* Elements count */ - &asn_SPC_E2_RANParameter_Value_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Value.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Value.h deleted file mode 100644 index 5783a50..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANParameter-Value.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANParameter_Value_H_ -#define _E2_RANParameter_Value_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "BOOLEAN.h" -#include "BIT_STRING.h" -#include "OCTET_STRING.h" -#include "PrintableString.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_RANParameter_Value_PR { - E2_RANParameter_Value_PR_NOTHING, /* No components present */ - E2_RANParameter_Value_PR_valueInt, - E2_RANParameter_Value_PR_valueEnum, - E2_RANParameter_Value_PR_valueBool, - E2_RANParameter_Value_PR_valueBitS, - E2_RANParameter_Value_PR_valueOctS, - E2_RANParameter_Value_PR_valuePrtS - /* Extensions may appear below */ - -} E2_RANParameter_Value_PR; - -/* E2_RANParameter-Value */ -typedef struct E2_RANParameter_Value { - E2_RANParameter_Value_PR present; - union E2_RANParameter_Value_u { - long valueInt; - long valueEnum; - BOOLEAN_t valueBool; - BIT_STRING_t valueBitS; - OCTET_STRING_t valueOctS; - PrintableString_t valuePrtS; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANParameter_Value_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANParameter_Value; -extern asn_CHOICE_specifics_t asn_SPC_E2_RANParameter_Value_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANParameter_Value_1[6]; -extern asn_per_constraints_t asn_PER_type_E2_RANParameter_Value_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANParameter_Value_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANfunction-Name.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANfunction-Name.c deleted file mode 100644 index 0d31573..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANfunction-Name.c +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANfunction-Name.h" - -static const int permitted_alphabet_table_2[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_2[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_2(const void *sptr) { - const int *table = permitted_alphabet_table_2; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_3[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_3[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_3(const void *sptr) { - const int *table = permitted_alphabet_table_3; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_4[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_4[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_4(const void *sptr) { - const int *table = permitted_alphabet_table_4; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static int -memb_E2_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_2(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_ranFunction_ShortName_2_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0])) - return -1; - return permitted_alphabet_table_2[value] - 1; -} -static int asn_PER_MAP_E2_ranFunction_ShortName_2_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0])) - return -1; - return permitted_alphabet_code2value_2[code]; -} -static int -memb_E2_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 1000) - && !check_permitted_alphabet_3(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_ranFunction_E2SM_OID_3_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) - return -1; - return permitted_alphabet_table_3[value] - 1; -} -static int asn_PER_MAP_E2_ranFunction_E2SM_OID_3_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) - return -1; - return permitted_alphabet_code2value_3[code]; -} -static int -memb_E2_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_4(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_ranFunction_Description_4_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) - return -1; - return permitted_alphabet_table_4[value] - 1; -} -static int asn_PER_MAP_E2_ranFunction_Description_4_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) - return -1; - return permitted_alphabet_code2value_4[code]; -} -static asn_per_constraints_t asn_PER_memb_E2_ranFunction_ShortName_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_ranFunction_ShortName_2_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_ranFunction_ShortName_2_c2v /* PER code to value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, - asn_PER_MAP_E2_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_ranFunction_E2SM_OID_3_c2v /* PER code to value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranFunction_Description_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_ranFunction_Description_4_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_ranFunction_Description_4_c2v /* PER code to value map */ -}; -asn_TYPE_member_t asn_MBR_E2_RANfunction_Name_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANfunction_Name, ranFunction_ShortName), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, &asn_PER_memb_E2_ranFunction_ShortName_constr_2, memb_E2_ranFunction_ShortName_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-ShortName" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANfunction_Name, ranFunction_E2SM_OID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, &asn_PER_memb_E2_ranFunction_E2SM_OID_constr_3, memb_E2_ranFunction_E2SM_OID_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-E2SM-OID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANfunction_Name, ranFunction_Description), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { 0, &asn_PER_memb_E2_ranFunction_Description_constr_4, memb_E2_ranFunction_Description_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-Description" - }, - { ATF_POINTER, 1, offsetof(struct E2_RANfunction_Name, ranFunction_Instance), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Instance" - }, -}; -static const int asn_MAP_E2_RANfunction_Name_oms_1[] = { 3 }; -static const ber_tlv_tag_t asn_DEF_E2_RANfunction_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANfunction_Name_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANfunction_Name_specs_1 = { - sizeof(struct E2_RANfunction_Name), - offsetof(struct E2_RANfunction_Name, _asn_ctx), - asn_MAP_E2_RANfunction_Name_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_E2_RANfunction_Name_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANfunction_Name = { - "RANfunction-Name", - "RANfunction-Name", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANfunction_Name_tags_1, - sizeof(asn_DEF_E2_RANfunction_Name_tags_1) - /sizeof(asn_DEF_E2_RANfunction_Name_tags_1[0]), /* 1 */ - asn_DEF_E2_RANfunction_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANfunction_Name_tags_1) - /sizeof(asn_DEF_E2_RANfunction_Name_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANfunction_Name_1, - 4, /* Elements count */ - &asn_SPC_E2_RANfunction_Name_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANfunction-Name.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANfunction-Name.h deleted file mode 100644 index 4bac198..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANfunction-Name.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANfunction_Name_H_ -#define _E2_RANfunction_Name_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" -#include "NativeInteger.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANfunction-Name */ -typedef struct E2_RANfunction_Name { - PrintableString_t ranFunction_ShortName; - PrintableString_t ranFunction_E2SM_OID; - PrintableString_t ranFunction_Description; - long *ranFunction_Instance; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANfunction_Name_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANfunction_Name; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANfunction_Name_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANfunction_Name_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANfunction_Name_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANimperativePolicy.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANimperativePolicy.c deleted file mode 100644 index 9f2c4e2..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANimperativePolicy.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANimperativePolicy.h" - -#include "E2_RANParameter-Item.h" -static int -memb_E2_ranImperativePolicy_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ranImperativePolicy_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranImperativePolicy_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ranImperativePolicy_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANParameter_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ranImperativePolicy_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ranImperativePolicy_List_specs_2 = { - sizeof(struct E2_RANimperativePolicy__ranImperativePolicy_List), - offsetof(struct E2_RANimperativePolicy__ranImperativePolicy_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ranImperativePolicy_List_2 = { - "ranImperativePolicy-List", - "ranImperativePolicy-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ranImperativePolicy_List_tags_2, - sizeof(asn_DEF_E2_ranImperativePolicy_List_tags_2) - /sizeof(asn_DEF_E2_ranImperativePolicy_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_E2_ranImperativePolicy_List_tags_2, /* Same as above */ - sizeof(asn_DEF_E2_ranImperativePolicy_List_tags_2) - /sizeof(asn_DEF_E2_ranImperativePolicy_List_tags_2[0]), /* 2 */ - { 0, &asn_PER_type_E2_ranImperativePolicy_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_E2_ranImperativePolicy_List_2, - 1, /* Single element */ - &asn_SPC_E2_ranImperativePolicy_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RANimperativePolicy_1[] = { - { ATF_POINTER, 1, offsetof(struct E2_RANimperativePolicy, ranImperativePolicy_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_E2_ranImperativePolicy_List_2, - 0, - { 0, &asn_PER_memb_E2_ranImperativePolicy_List_constr_2, memb_E2_ranImperativePolicy_List_constraint_1 }, - 0, 0, /* No default value */ - "ranImperativePolicy-List" - }, -}; -static const int asn_MAP_E2_RANimperativePolicy_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2_RANimperativePolicy_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANimperativePolicy_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranImperativePolicy-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANimperativePolicy_specs_1 = { - sizeof(struct E2_RANimperativePolicy), - offsetof(struct E2_RANimperativePolicy, _asn_ctx), - asn_MAP_E2_RANimperativePolicy_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2_RANimperativePolicy_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANimperativePolicy = { - "RANimperativePolicy", - "RANimperativePolicy", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANimperativePolicy_tags_1, - sizeof(asn_DEF_E2_RANimperativePolicy_tags_1) - /sizeof(asn_DEF_E2_RANimperativePolicy_tags_1[0]), /* 1 */ - asn_DEF_E2_RANimperativePolicy_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANimperativePolicy_tags_1) - /sizeof(asn_DEF_E2_RANimperativePolicy_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANimperativePolicy_1, - 1, /* Elements count */ - &asn_SPC_E2_RANimperativePolicy_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANimperativePolicy.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANimperativePolicy.h deleted file mode 100644 index 25096bb..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANimperativePolicy.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANimperativePolicy_H_ -#define _E2_RANimperativePolicy_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANParameter_Item; - -/* E2_RANimperativePolicy */ -typedef struct E2_RANimperativePolicy { - struct E2_RANimperativePolicy__ranImperativePolicy_List { - A_SEQUENCE_OF(struct E2_RANParameter_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ranImperativePolicy_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANimperativePolicy_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANimperativePolicy; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANimperativePolicy_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANimperativePolicy_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANimperativePolicy_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANparameterDef-Item.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANparameterDef-Item.c deleted file mode 100644 index b99e48f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANparameterDef-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANparameterDef-Item.h" - -asn_TYPE_member_t asn_MBR_E2_RANparameterDef_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameterDef_Item, ranParameter_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameterDef_Item, ranParameter_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANparameterDef_Item, ranParameter_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RANparameterDef_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANparameterDef_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANparameterDef_Item_specs_1 = { - sizeof(struct E2_RANparameterDef_Item), - offsetof(struct E2_RANparameterDef_Item, _asn_ctx), - asn_MAP_E2_RANparameterDef_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANparameterDef_Item = { - "RANparameterDef-Item", - "RANparameterDef-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANparameterDef_Item_tags_1, - sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1) - /sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_RANparameterDef_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1) - /sizeof(asn_DEF_E2_RANparameterDef_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANparameterDef_Item_1, - 3, /* Elements count */ - &asn_SPC_E2_RANparameterDef_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANparameterDef-Item.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANparameterDef-Item.h deleted file mode 100644 index eb8be4e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANparameterDef-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANparameterDef_Item_H_ -#define _E2_RANparameterDef_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANParameter-ID.h" -#include "E2_RANParameter-Name.h" -#include "E2_RANParameter-Type.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANparameterDef-Item */ -typedef struct E2_RANparameterDef_Item { - E2_RANParameter_ID_t ranParameter_ID; - E2_RANParameter_Name_t ranParameter_Name; - E2_RANParameter_Type_t ranParameter_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANparameterDef_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANparameterDef_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANparameterDef_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANparameterDef_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANparameterDef_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroup-Item.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroup-Item.c deleted file mode 100644 index 6ae5381..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroup-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANueGroup-Item.h" - -asn_TYPE_member_t asn_MBR_E2_RANueGroup_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANueGroup_Item, ranUEgroupID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANueGroupID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranUEgroupID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANueGroup_Item, ranUEgroupDefinition), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANueGroupDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranUEgroupDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANueGroup_Item, ranPolicy), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANimperativePolicy, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranPolicy" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RANueGroup_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANueGroup_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranUEgroupID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranUEgroupDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranPolicy */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANueGroup_Item_specs_1 = { - sizeof(struct E2_RANueGroup_Item), - offsetof(struct E2_RANueGroup_Item, _asn_ctx), - asn_MAP_E2_RANueGroup_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANueGroup_Item = { - "RANueGroup-Item", - "RANueGroup-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANueGroup_Item_tags_1, - sizeof(asn_DEF_E2_RANueGroup_Item_tags_1) - /sizeof(asn_DEF_E2_RANueGroup_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_RANueGroup_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANueGroup_Item_tags_1) - /sizeof(asn_DEF_E2_RANueGroup_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANueGroup_Item_1, - 3, /* Elements count */ - &asn_SPC_E2_RANueGroup_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroup-Item.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroup-Item.h deleted file mode 100644 index e732c33..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroup-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANueGroup_Item_H_ -#define _E2_RANueGroup_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANueGroupID.h" -#include "E2_RANueGroupDefinition.h" -#include "E2_RANimperativePolicy.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANueGroup-Item */ -typedef struct E2_RANueGroup_Item { - E2_RANueGroupID_t ranUEgroupID; - E2_RANueGroupDefinition_t ranUEgroupDefinition; - E2_RANimperativePolicy_t ranPolicy; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANueGroup_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANueGroup_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANueGroup_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANueGroup_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANueGroup_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDef-Item.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDef-Item.c deleted file mode 100644 index 5cf8076..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDef-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANueGroupDef-Item.h" - -asn_TYPE_member_t asn_MBR_E2_RANueGroupDef_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RANueGroupDef_Item, ranParameter_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANueGroupDef_Item, ranParameter_Test), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_Test, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Test" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RANueGroupDef_Item, ranParameter_Value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2_RANParameter_Value, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranParameter-Value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RANueGroupDef_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANueGroupDef_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Test */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANueGroupDef_Item_specs_1 = { - sizeof(struct E2_RANueGroupDef_Item), - offsetof(struct E2_RANueGroupDef_Item, _asn_ctx), - asn_MAP_E2_RANueGroupDef_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANueGroupDef_Item = { - "RANueGroupDef-Item", - "RANueGroupDef-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANueGroupDef_Item_tags_1, - sizeof(asn_DEF_E2_RANueGroupDef_Item_tags_1) - /sizeof(asn_DEF_E2_RANueGroupDef_Item_tags_1[0]), /* 1 */ - asn_DEF_E2_RANueGroupDef_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANueGroupDef_Item_tags_1) - /sizeof(asn_DEF_E2_RANueGroupDef_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANueGroupDef_Item_1, - 3, /* Elements count */ - &asn_SPC_E2_RANueGroupDef_Item_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDef-Item.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDef-Item.h deleted file mode 100644 index 9cd8e70..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDef-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANueGroupDef_Item_H_ -#define _E2_RANueGroupDef_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RANParameter-ID.h" -#include "E2_RANParameter-Test.h" -#include "E2_RANParameter-Value.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANueGroupDef-Item */ -typedef struct E2_RANueGroupDef_Item { - E2_RANParameter_ID_t ranParameter_ID; - E2_RANParameter_Test_t ranParameter_Test; - E2_RANParameter_Value_t ranParameter_Value; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANueGroupDef_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANueGroupDef_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANueGroupDef_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANueGroupDef_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANueGroupDef_Item_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDefinition.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDefinition.c deleted file mode 100644 index c216dbd..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDefinition.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANueGroupDefinition.h" - -#include "E2_RANueGroupDef-Item.h" -static int -memb_E2_ranUEgroupDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ranUEgroupDef_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ranUEgroupDef_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ranUEgroupDef_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANueGroupDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ranUEgroupDef_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ranUEgroupDef_List_specs_2 = { - sizeof(struct E2_RANueGroupDefinition__ranUEgroupDef_List), - offsetof(struct E2_RANueGroupDefinition__ranUEgroupDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ranUEgroupDef_List_2 = { - "ranUEgroupDef-List", - "ranUEgroupDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ranUEgroupDef_List_tags_2, - sizeof(asn_DEF_E2_ranUEgroupDef_List_tags_2) - /sizeof(asn_DEF_E2_ranUEgroupDef_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_E2_ranUEgroupDef_List_tags_2, /* Same as above */ - sizeof(asn_DEF_E2_ranUEgroupDef_List_tags_2) - /sizeof(asn_DEF_E2_ranUEgroupDef_List_tags_2[0]), /* 2 */ - { 0, &asn_PER_type_E2_ranUEgroupDef_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_E2_ranUEgroupDef_List_2, - 1, /* Single element */ - &asn_SPC_E2_ranUEgroupDef_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RANueGroupDefinition_1[] = { - { ATF_POINTER, 1, offsetof(struct E2_RANueGroupDefinition, ranUEgroupDef_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_E2_ranUEgroupDef_List_2, - 0, - { 0, &asn_PER_memb_E2_ranUEgroupDef_List_constr_2, memb_E2_ranUEgroupDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ranUEgroupDef-List" - }, -}; -static const int asn_MAP_E2_RANueGroupDefinition_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2_RANueGroupDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RANueGroupDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranUEgroupDef-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RANueGroupDefinition_specs_1 = { - sizeof(struct E2_RANueGroupDefinition), - offsetof(struct E2_RANueGroupDefinition, _asn_ctx), - asn_MAP_E2_RANueGroupDefinition_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2_RANueGroupDefinition_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANueGroupDefinition = { - "RANueGroupDefinition", - "RANueGroupDefinition", - &asn_OP_SEQUENCE, - asn_DEF_E2_RANueGroupDefinition_tags_1, - sizeof(asn_DEF_E2_RANueGroupDefinition_tags_1) - /sizeof(asn_DEF_E2_RANueGroupDefinition_tags_1[0]), /* 1 */ - asn_DEF_E2_RANueGroupDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANueGroupDefinition_tags_1) - /sizeof(asn_DEF_E2_RANueGroupDefinition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RANueGroupDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2_RANueGroupDefinition_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDefinition.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDefinition.h deleted file mode 100644 index 971c24a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupDefinition.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANueGroupDefinition_H_ -#define _E2_RANueGroupDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANueGroupDef_Item; - -/* E2_RANueGroupDefinition */ -typedef struct E2_RANueGroupDefinition { - struct E2_RANueGroupDefinition__ranUEgroupDef_List { - A_SEQUENCE_OF(struct E2_RANueGroupDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ranUEgroupDef_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RANueGroupDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANueGroupDefinition; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RANueGroupDefinition_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RANueGroupDefinition_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANueGroupDefinition_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupID.c deleted file mode 100644 index fd2ec17..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupID.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RANueGroupID.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_RANueGroupID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RANueGroupID = { - "RANueGroupID", - "RANueGroupID", - &asn_OP_NativeInteger, - asn_DEF_E2_RANueGroupID_tags_1, - sizeof(asn_DEF_E2_RANueGroupID_tags_1) - /sizeof(asn_DEF_E2_RANueGroupID_tags_1[0]), /* 1 */ - asn_DEF_E2_RANueGroupID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RANueGroupID_tags_1) - /sizeof(asn_DEF_E2_RANueGroupID_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupID.h deleted file mode 100644 index 095f216..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RANueGroupID.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RANueGroupID_H_ -#define _E2_RANueGroupID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RANueGroupID */ -typedef long E2_RANueGroupID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RANueGroupID; -asn_struct_free_f E2_RANueGroupID_free; -asn_struct_print_f E2_RANueGroupID_print; -asn_constr_check_f E2_RANueGroupID_constraint; -ber_type_decoder_f E2_RANueGroupID_decode_ber; -der_type_encoder_f E2_RANueGroupID_encode_der; -xer_type_decoder_f E2_RANueGroupID_decode_xer; -xer_type_encoder_f E2_RANueGroupID_encode_xer; -per_type_decoder_f E2_RANueGroupID_decode_uper; -per_type_encoder_f E2_RANueGroupID_encode_uper; -per_type_decoder_f E2_RANueGroupID_decode_aper; -per_type_encoder_f E2_RANueGroupID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RANueGroupID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ControlStyle-List.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ControlStyle-List.c deleted file mode 100644 index b71d0e9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ControlStyle-List.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-ControlStyle-List.h" - -asn_TYPE_member_t asn_MBR_E2_RIC_ControlStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_ControlMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ControlMessageFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ControlStyle_List, ric_CallProcessIDFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-CallProcessIDFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_ControlStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_ControlStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ControlHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ControlMessageFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ric-CallProcessIDFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ControlStyle_List_specs_1 = { - sizeof(struct E2_RIC_ControlStyle_List), - offsetof(struct E2_RIC_ControlStyle_List, _asn_ctx), - asn_MAP_E2_RIC_ControlStyle_List_tag2el_1, - 5, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 5, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_ControlStyle_List = { - "RIC-ControlStyle-List", - "RIC-ControlStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_ControlStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_ControlStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ControlStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_ControlStyle_List_1, - 5, /* Elements count */ - &asn_SPC_E2_RIC_ControlStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ControlStyle-List.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ControlStyle-List.h deleted file mode 100644 index fc0a765..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ControlStyle-List.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_ControlStyle_List_H_ -#define _E2_RIC_ControlStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-ControlStyle-List */ -typedef struct E2_RIC_ControlStyle_List { - E2_RIC_Style_Type_t ric_ControlStyle_Type; - E2_RIC_Style_Name_t ric_ControlStyle_Name; - E2_RIC_Format_Type_t ric_ControlHeaderFormat_Type; - E2_RIC_Format_Type_t ric_ControlMessageFormat_Type; - E2_RIC_Format_Type_t ric_CallProcessIDFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_ControlStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_ControlStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ControlStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_ControlStyle_List_1[5]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_ControlStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-EventTriggerStyle-List.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-EventTriggerStyle-List.c deleted file mode 100644 index 812d904..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-EventTriggerStyle-List.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-EventTriggerStyle-List.h" - -asn_TYPE_member_t asn_MBR_E2_RIC_EventTriggerStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_EventTriggerStyle_List, ric_EventTriggerFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_EventTriggerStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_EventTriggerStyle_List_specs_1 = { - sizeof(struct E2_RIC_EventTriggerStyle_List), - offsetof(struct E2_RIC_EventTriggerStyle_List, _asn_ctx), - asn_MAP_E2_RIC_EventTriggerStyle_List_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_EventTriggerStyle_List = { - "RIC-EventTriggerStyle-List", - "RIC-EventTriggerStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_EventTriggerStyle_List_1, - 3, /* Elements count */ - &asn_SPC_E2_RIC_EventTriggerStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-EventTriggerStyle-List.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-EventTriggerStyle-List.h deleted file mode 100644 index b2e9b4d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-EventTriggerStyle-List.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_EventTriggerStyle_List_H_ -#define _E2_RIC_EventTriggerStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-EventTriggerStyle-List */ -typedef struct E2_RIC_EventTriggerStyle_List { - E2_RIC_Style_Type_t ric_EventTriggerStyle_Type; - E2_RIC_Style_Name_t ric_EventTriggerStyle_Name; - E2_RIC_Format_Type_t ric_EventTriggerFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_EventTriggerStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_EventTriggerStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_EventTriggerStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_EventTriggerStyle_List_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_EventTriggerStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Format-Type.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Format-Type.c deleted file mode 100644 index c08afc8..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Format-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-Format-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_RIC_Format_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_Format_Type = { - "RIC-Format-Type", - "RIC-Format-Type", - &asn_OP_NativeInteger, - asn_DEF_E2_RIC_Format_Type_tags_1, - sizeof(asn_DEF_E2_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Format_Type_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_Format_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Format_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Format-Type.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Format-Type.h deleted file mode 100644 index 063c447..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Format-Type.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_Format_Type_H_ -#define _E2_RIC_Format_Type_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-Format-Type */ -typedef long E2_RIC_Format_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_Format_Type; -asn_struct_free_f E2_RIC_Format_Type_free; -asn_struct_print_f E2_RIC_Format_Type_print; -asn_constr_check_f E2_RIC_Format_Type_constraint; -ber_type_decoder_f E2_RIC_Format_Type_decode_ber; -der_type_encoder_f E2_RIC_Format_Type_encode_der; -xer_type_decoder_f E2_RIC_Format_Type_decode_xer; -xer_type_encoder_f E2_RIC_Format_Type_encode_xer; -per_type_decoder_f E2_RIC_Format_Type_decode_uper; -per_type_encoder_f E2_RIC_Format_Type_encode_uper; -per_type_decoder_f E2_RIC_Format_Type_decode_aper; -per_type_encoder_f E2_RIC_Format_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_Format_Type_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-InsertStyle-List.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-InsertStyle-List.c deleted file mode 100644 index 88df479..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-InsertStyle-List.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-InsertStyle-List.h" - -#include "E2_RANparameterDef-Item.h" -static int -memb_E2_ric_InsertRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_InsertRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_InsertRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_InsertRanParameterDef_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameterDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_InsertRanParameterDef_List_specs_5 = { - sizeof(struct E2_RIC_InsertStyle_List__ric_InsertRanParameterDef_List), - offsetof(struct E2_RIC_InsertStyle_List__ric_InsertRanParameterDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_InsertRanParameterDef_List_5 = { - "ric-InsertRanParameterDef-List", - "ric-InsertRanParameterDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5, - sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_InsertRanParameterDef_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_InsertRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_InsertRanParameterDef_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_InsertRanParameterDef_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RIC_InsertStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-InsertStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-InsertStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertActionFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-InsertActionFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_InsertRanParameterDef_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_InsertRanParameterDef_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_InsertRanParameterDef_List_constr_5, memb_E2_ric_InsertRanParameterDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-InsertRanParameterDef-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_IndicationHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_IndicationMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationMessageFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_InsertStyle_List, ric_CallProcessIDFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (6 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-CallProcessIDFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_InsertStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_InsertStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-InsertStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-InsertStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-InsertActionFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-InsertRanParameterDef-List */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ric-IndicationMessageFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ric-CallProcessIDFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_InsertStyle_List_specs_1 = { - sizeof(struct E2_RIC_InsertStyle_List), - offsetof(struct E2_RIC_InsertStyle_List, _asn_ctx), - asn_MAP_E2_RIC_InsertStyle_List_tag2el_1, - 7, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 7, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_InsertStyle_List = { - "RIC-InsertStyle-List", - "RIC-InsertStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_InsertStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_InsertStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_InsertStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_InsertStyle_List_1, - 7, /* Elements count */ - &asn_SPC_E2_RIC_InsertStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-InsertStyle-List.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-InsertStyle-List.h deleted file mode 100644 index 4a26a73..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-InsertStyle-List.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_InsertStyle_List_H_ -#define _E2_RIC_InsertStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameterDef_Item; - -/* E2_RIC-InsertStyle-List */ -typedef struct E2_RIC_InsertStyle_List { - E2_RIC_Style_Type_t ric_InsertStyle_Type; - E2_RIC_Style_Name_t ric_InsertStyle_Name; - E2_RIC_Format_Type_t ric_InsertActionFormat_Type; - struct E2_RIC_InsertStyle_List__ric_InsertRanParameterDef_List { - A_SEQUENCE_OF(struct E2_RANparameterDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ric_InsertRanParameterDef_List; - E2_RIC_Format_Type_t ric_IndicationHeaderFormat_Type; - E2_RIC_Format_Type_t ric_IndicationMessageFormat_Type; - E2_RIC_Format_Type_t ric_CallProcessIDFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_InsertStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_InsertStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_InsertStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_InsertStyle_List_1[7]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_InsertStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-PolicyStyle-List.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-PolicyStyle-List.c deleted file mode 100644 index 7c71a46..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-PolicyStyle-List.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-PolicyStyle-List.h" - -#include "E2_RANparameterDef-Item.h" -static int -memb_E2_ric_PolicyRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_PolicyRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_PolicyRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_PolicyRanParameterDef_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameterDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_PolicyRanParameterDef_List_specs_5 = { - sizeof(struct E2_RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List), - offsetof(struct E2_RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_PolicyRanParameterDef_List_5 = { - "ric-PolicyRanParameterDef-List", - "ric-PolicyRanParameterDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5, - sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_PolicyRanParameterDef_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_PolicyRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_PolicyRanParameterDef_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_PolicyRanParameterDef_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RIC_PolicyStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-PolicyStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-PolicyStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyActionFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-PolicyActionFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_PolicyStyle_List, ric_PolicyRanParameterDef_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_PolicyRanParameterDef_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_PolicyRanParameterDef_List_constr_5, memb_E2_ric_PolicyRanParameterDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-PolicyRanParameterDef-List" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_PolicyStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_PolicyStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-PolicyStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-PolicyActionFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-PolicyRanParameterDef-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_PolicyStyle_List_specs_1 = { - sizeof(struct E2_RIC_PolicyStyle_List), - offsetof(struct E2_RIC_PolicyStyle_List, _asn_ctx), - asn_MAP_E2_RIC_PolicyStyle_List_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_PolicyStyle_List = { - "RIC-PolicyStyle-List", - "RIC-PolicyStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_PolicyStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_PolicyStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_PolicyStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_PolicyStyle_List_1, - 4, /* Elements count */ - &asn_SPC_E2_RIC_PolicyStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-PolicyStyle-List.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-PolicyStyle-List.h deleted file mode 100644 index 120bb52..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-PolicyStyle-List.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_PolicyStyle_List_H_ -#define _E2_RIC_PolicyStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameterDef_Item; - -/* E2_RIC-PolicyStyle-List */ -typedef struct E2_RIC_PolicyStyle_List { - E2_RIC_Style_Type_t ric_PolicyStyle_Type; - E2_RIC_Style_Name_t ric_PolicyStyle_Name; - E2_RIC_Format_Type_t ric_PolicyActionFormat_Type; - struct E2_RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List { - A_SEQUENCE_OF(struct E2_RANparameterDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ric_PolicyRanParameterDef_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_PolicyStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_PolicyStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_PolicyStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_PolicyStyle_List_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_PolicyStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ReportStyle-List.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ReportStyle-List.c deleted file mode 100644 index fa2e626..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ReportStyle-List.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-ReportStyle-List.h" - -#include "E2_RANparameterDef-Item.h" -static int -memb_E2_ric_ReportRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 255)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_type_E2_ric_ReportRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_E2_ric_ReportRanParameterDef_List_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2_ric_ReportRanParameterDef_List_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2_RANparameterDef_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2_ric_ReportRanParameterDef_List_specs_5 = { - sizeof(struct E2_RIC_ReportStyle_List__ric_ReportRanParameterDef_List), - offsetof(struct E2_RIC_ReportStyle_List__ric_ReportRanParameterDef_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_E2_ric_ReportRanParameterDef_List_5 = { - "ric-ReportRanParameterDef-List", - "ric-ReportRanParameterDef-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5, - sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5[0]) - 1, /* 1 */ - asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5, /* Same as above */ - sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5) - /sizeof(asn_DEF_E2_ric_ReportRanParameterDef_List_tags_5[0]), /* 2 */ - { 0, &asn_PER_type_E2_ric_ReportRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_E2_ric_ReportRanParameterDef_List_5, - 1, /* Single element */ - &asn_SPC_E2_ric_ReportRanParameterDef_List_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2_RIC_ReportStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportActionFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportActionFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_ReportRanParameterDef_List), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_E2_ric_ReportRanParameterDef_List_5, - 0, - { 0, &asn_PER_memb_E2_ric_ReportRanParameterDef_List_constr_5, memb_E2_ric_ReportRanParameterDef_List_constraint_1 }, - 0, 0, /* No default value */ - "ric-ReportRanParameterDef-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_IndicationHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2_RIC_ReportStyle_List, ric_IndicationMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationMessageFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_ReportStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2_RIC_ReportStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportActionFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ReportRanParameterDef-List */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-IndicationMessageFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ReportStyle_List_specs_1 = { - sizeof(struct E2_RIC_ReportStyle_List), - offsetof(struct E2_RIC_ReportStyle_List, _asn_ctx), - asn_MAP_E2_RIC_ReportStyle_List_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 6, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_ReportStyle_List = { - "RIC-ReportStyle-List", - "RIC-ReportStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_E2_RIC_ReportStyle_List_tags_1, - sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_ReportStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_E2_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2_RIC_ReportStyle_List_1, - 6, /* Elements count */ - &asn_SPC_E2_RIC_ReportStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ReportStyle-List.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ReportStyle-List.h deleted file mode 100644 index 83cec43..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-ReportStyle-List.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_ReportStyle_List_H_ -#define _E2_RIC_ReportStyle_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2_RIC-Style-Type.h" -#include "E2_RIC-Style-Name.h" -#include "E2_RIC-Format-Type.h" -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct E2_RANparameterDef_Item; - -/* E2_RIC-ReportStyle-List */ -typedef struct E2_RIC_ReportStyle_List { - E2_RIC_Style_Type_t ric_ReportStyle_Type; - E2_RIC_Style_Name_t ric_ReportStyle_Name; - E2_RIC_Format_Type_t ric_ReportActionFormat_Type; - struct E2_RIC_ReportStyle_List__ric_ReportRanParameterDef_List { - A_SEQUENCE_OF(struct E2_RANparameterDef_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ric_ReportRanParameterDef_List; - E2_RIC_Format_Type_t ric_IndicationHeaderFormat_Type; - E2_RIC_Format_Type_t ric_IndicationMessageFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2_RIC_ReportStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_ReportStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_E2_RIC_ReportStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_E2_RIC_ReportStyle_List_1[6]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_ReportStyle_List_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Name.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Name.c deleted file mode 100644 index 4052755..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Name.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-Style-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -E2_RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_E2_RIC_Style_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_E2_RIC_Style_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_RIC_Style_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_E2_RIC_Style_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_E2_RIC_Style_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_RIC_Style_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Name = { - "RIC-Style-Name", - "RIC-Style-Name", - &asn_OP_PrintableString, - asn_DEF_E2_RIC_Style_Name_tags_1, - sizeof(asn_DEF_E2_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Name_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_Style_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Name_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_RIC_Style_Name_constr_1, E2_RIC_Style_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Name.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Name.h deleted file mode 100644 index e5977be..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Name.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_Style_Name_H_ -#define _E2_RIC_Style_Name_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-Style-Name */ -typedef PrintableString_t E2_RIC_Style_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_RIC_Style_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Name; -asn_struct_free_f E2_RIC_Style_Name_free; -asn_struct_print_f E2_RIC_Style_Name_print; -asn_constr_check_f E2_RIC_Style_Name_constraint; -ber_type_decoder_f E2_RIC_Style_Name_decode_ber; -der_type_encoder_f E2_RIC_Style_Name_encode_der; -xer_type_decoder_f E2_RIC_Style_Name_decode_xer; -xer_type_encoder_f E2_RIC_Style_Name_encode_xer; -per_type_decoder_f E2_RIC_Style_Name_decode_uper; -per_type_encoder_f E2_RIC_Style_Name_encode_uper; -per_type_decoder_f E2_RIC_Style_Name_decode_aper; -per_type_encoder_f E2_RIC_Style_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_Style_Name_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Type.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Type.c deleted file mode 100644 index 82e938d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_RIC-Style-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_RIC_Style_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Type = { - "RIC-Style-Type", - "RIC-Style-Type", - &asn_OP_NativeInteger, - asn_DEF_E2_RIC_Style_Type_tags_1, - sizeof(asn_DEF_E2_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Type_tags_1[0]), /* 1 */ - asn_DEF_E2_RIC_Style_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_E2_RIC_Style_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Type.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Type.h deleted file mode 100644 index ec2704a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_RIC-Style-Type.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_RIC_Style_Type_H_ -#define _E2_RIC_Style_Type_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_RIC-Style-Type */ -typedef long E2_RIC_Style_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_RIC_Style_Type; -asn_struct_free_f E2_RIC_Style_Type_free; -asn_struct_print_f E2_RIC_Style_Type_print; -asn_constr_check_f E2_RIC_Style_Type_constraint; -ber_type_decoder_f E2_RIC_Style_Type_decode_ber; -der_type_encoder_f E2_RIC_Style_Type_encode_der; -xer_type_decoder_f E2_RIC_Style_Type_decode_xer; -xer_type_encoder_f E2_RIC_Style_Type_encode_xer; -per_type_decoder_f E2_RIC_Style_Type_decode_uper; -per_type_encoder_f E2_RIC_Style_Type_encode_uper; -per_type_decoder_f E2_RIC_Style_Type_decode_aper; -per_type_encoder_f E2_RIC_Style_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_RIC_Style_Type_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Style-ID.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Style-ID.c deleted file mode 100644 index 829c8b7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Style-ID.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_Style-ID.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_E2_Style_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_Style_ID = { - "Style-ID", - "Style-ID", - &asn_OP_NativeInteger, - asn_DEF_E2_Style_ID_tags_1, - sizeof(asn_DEF_E2_Style_ID_tags_1) - /sizeof(asn_DEF_E2_Style_ID_tags_1[0]), /* 1 */ - asn_DEF_E2_Style_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_Style_ID_tags_1) - /sizeof(asn_DEF_E2_Style_ID_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Style-ID.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Style-ID.h deleted file mode 100644 index d959947..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_Style-ID.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_Style_ID_H_ -#define _E2_Style_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_Style-ID */ -typedef long E2_Style_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2_Style_ID; -asn_struct_free_f E2_Style_ID_free; -asn_struct_print_f E2_Style_ID_print; -asn_constr_check_f E2_Style_ID_constraint; -ber_type_decoder_f E2_Style_ID_decode_ber; -der_type_encoder_f E2_Style_ID_encode_der; -xer_type_decoder_f E2_Style_ID_decode_xer; -xer_type_encoder_f E2_Style_ID_encode_xer; -per_type_decoder_f E2_Style_ID_decode_uper; -per_type_encoder_f E2_Style_ID_encode_uper; -per_type_decoder_f E2_Style_ID_decode_aper; -per_type_encoder_f E2_Style_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_Style_ID_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TimeStamp.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TimeStamp.c deleted file mode 100644 index fba0d1f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TimeStamp.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_TimeStamp.h" - -int -E2_TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 8)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_TimeStamp_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_E2_TimeStamp_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_TimeStamp = { - "TimeStamp", - "TimeStamp", - &asn_OP_OCTET_STRING, - asn_DEF_E2_TimeStamp_tags_1, - sizeof(asn_DEF_E2_TimeStamp_tags_1) - /sizeof(asn_DEF_E2_TimeStamp_tags_1[0]), /* 1 */ - asn_DEF_E2_TimeStamp_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_TimeStamp_tags_1) - /sizeof(asn_DEF_E2_TimeStamp_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_TimeStamp_constr_1, E2_TimeStamp_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TimeStamp.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TimeStamp.h deleted file mode 100644 index 91b6417..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TimeStamp.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_TimeStamp_H_ -#define _E2_TimeStamp_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2_TimeStamp */ -typedef OCTET_STRING_t E2_TimeStamp_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_TimeStamp_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_TimeStamp; -asn_struct_free_f E2_TimeStamp_free; -asn_struct_print_f E2_TimeStamp_print; -asn_constr_check_f E2_TimeStamp_constraint; -ber_type_decoder_f E2_TimeStamp_decode_ber; -der_type_encoder_f E2_TimeStamp_encode_der; -xer_type_decoder_f E2_TimeStamp_decode_xer; -xer_type_encoder_f E2_TimeStamp_encode_xer; -per_type_decoder_f E2_TimeStamp_decode_uper; -per_type_encoder_f E2_TimeStamp_encode_uper; -per_type_decoder_f E2_TimeStamp_decode_aper; -per_type_encoder_f E2_TimeStamp_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_TimeStamp_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TypeOfMessage.c b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TypeOfMessage.c deleted file mode 100644 index 8f60c5b..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TypeOfMessage.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#include "E2_TypeOfMessage.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2_TypeOfMessage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2_TypeOfMessage_value2enum_1[] = { - { 0, 7, "nothing" }, - { 1, 18, "initiating-message" }, - { 2, 18, "successful-outcome" }, - { 3, 20, "unsuccessful-outcome" } -}; -static const unsigned int asn_MAP_E2_TypeOfMessage_enum2value_1[] = { - 1, /* initiating-message(1) */ - 0, /* nothing(0) */ - 2, /* successful-outcome(2) */ - 3 /* unsuccessful-outcome(3) */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2_TypeOfMessage_specs_1 = { - asn_MAP_E2_TypeOfMessage_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2_TypeOfMessage_enum2value_1, /* N => "tag"; sorted by N */ - 4, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2_TypeOfMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2_TypeOfMessage = { - "TypeOfMessage", - "TypeOfMessage", - &asn_OP_NativeEnumerated, - asn_DEF_E2_TypeOfMessage_tags_1, - sizeof(asn_DEF_E2_TypeOfMessage_tags_1) - /sizeof(asn_DEF_E2_TypeOfMessage_tags_1[0]), /* 1 */ - asn_DEF_E2_TypeOfMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_E2_TypeOfMessage_tags_1) - /sizeof(asn_DEF_E2_TypeOfMessage_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2_TypeOfMessage_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2_TypeOfMessage_specs_1 /* Additional specs */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TypeOfMessage.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TypeOfMessage.h deleted file mode 100644 index 948b3da..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_TypeOfMessage.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-gNB-X2-IEs" - * found in "spec/e2sm-gNB-X2-v401.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example` - */ - -#ifndef _E2_TypeOfMessage_H_ -#define _E2_TypeOfMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2_TypeOfMessage { - E2_TypeOfMessage_nothing = 0, - E2_TypeOfMessage_initiating_message = 1, - E2_TypeOfMessage_successful_outcome = 2, - E2_TypeOfMessage_unsuccessful_outcome = 3 -} e_E2_TypeOfMessage; - -/* E2_TypeOfMessage */ -typedef long E2_TypeOfMessage_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2_TypeOfMessage_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2_TypeOfMessage; -extern const asn_INTEGER_specifics_t asn_SPC_TypeOfMessage_specs_1; -asn_struct_free_f TypeOfMessage_free; -asn_struct_print_f TypeOfMessage_print; -asn_constr_check_f TypeOfMessage_constraint; -ber_type_decoder_f TypeOfMessage_decode_ber; -der_type_encoder_f TypeOfMessage_encode_der; -xer_type_decoder_f TypeOfMessage_decode_xer; -xer_type_encoder_f TypeOfMessage_encode_xer; -per_type_decoder_f TypeOfMessage_decode_uper; -per_type_encoder_f TypeOfMessage_encode_uper; -per_type_decoder_f TypeOfMessage_decode_aper; -per_type_encoder_f TypeOfMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_TypeOfMessage_H_ */ -#include "asn_internal.h" diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_asn_constant.h b/3rdparty/E2SM-gNB-X2-V4.0.1/E2_asn_constant.h deleted file mode 100644 index bb823f0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/E2_asn_constant.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -#ifndef _E2_ASN_CONSTANT_H -#define _E2_ASN_CONSTANT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define E2_maxProtocolIEs (65535) -#define E2_maxofInterfaceProtocolIE (15) -#define E2_maxofUEgroup (15) -#define E2_maxofActionParameters (255) -#define E2_maxofRANParameters (255) -#define E2_maxofRICstyles (63) - - -#ifdef __cplusplus -} -#endif - -#endif /* _E2_ASN_CONSTANT_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/INTEGER.c b/3rdparty/E2SM-gNB-X2-V4.0.1/INTEGER.c deleted file mode 100644 index 2a2f4d7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/INTEGER.c +++ /dev/null @@ -1,1735 +0,0 @@ -/*- - * Copyright (c) 2003-2014 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* Encoder and decoder of a primitive type */ -#include - -/* - * INTEGER basic type description. - */ -static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_INTEGER = { - INTEGER_free, - INTEGER_print, - INTEGER_compare, - ber_decode_primitive, - INTEGER_encode_der, - INTEGER_decode_xer, - INTEGER_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - INTEGER_decode_oer, /* OER decoder */ - INTEGER_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - INTEGER_decode_uper, /* Unaligned PER decoder */ - INTEGER_encode_uper, /* Unaligned PER encoder */ - INTEGER_decode_aper, /* Aligned PER decoder */ - INTEGER_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - INTEGER_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_INTEGER = { - "INTEGER", - "INTEGER", - &asn_OP_INTEGER, - asn_DEF_INTEGER_tags, - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - asn_DEF_INTEGER_tags, /* Same as above */ - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Encode INTEGER type using DER. - */ -asn_enc_rval_t -INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t rval; - INTEGER_t effective_integer; - - ASN_DEBUG("%s %s as INTEGER (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - /* - * Canonicalize integer in the buffer. - * (Remove too long sign extension, remove some first 0x00 bytes) - */ - if(st->buf) { - uint8_t *buf = st->buf; - uint8_t *end1 = buf + st->size - 1; - int shift; - - /* Compute the number of superfluous leading bytes */ - for(; buf < end1; buf++) { - /* - * If the contents octets of an integer value encoding - * consist of more than one octet, then the bits of the - * first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - switch(*buf) { - case 0x00: if((buf[1] & 0x80) == 0) - continue; - break; - case 0xff: if((buf[1] & 0x80)) - continue; - break; - } - break; - } - - /* Remove leading superfluous bytes from the integer */ - shift = buf - st->buf; - if(shift) { - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - unconst.c_buf = st->buf; - effective_integer.buf = unconst.nc_buf + shift; - effective_integer.size = st->size - shift; - - st = &effective_integer; - } - } - - rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); - if(rval.structure_ptr == &effective_integer) { - rval.structure_ptr = sptr; - } - return rval; -} - -static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( - const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop); - -/* - * INTEGER specific human-readable output. - */ -static ssize_t -INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; - uint8_t *buf = st->buf; - uint8_t *buf_end = st->buf + st->size; - intmax_t value; - ssize_t wrote = 0; - char *p; - int ret; - - if(specs && specs->field_unsigned) - ret = asn_INTEGER2umax(st, (uintmax_t *)&value); - else - ret = asn_INTEGER2imax(st, &value); - - /* Simple case: the integer size is small */ - if(ret == 0) { - const asn_INTEGER_enum_map_t *el; - el = (value >= 0 || !specs || !specs->field_unsigned) - ? INTEGER_map_value2enum(specs, value) : 0; - if(el) { - if(plainOrXER == 0) - return asn__format_to_callback(cb, app_key, - "%" ASN_PRIdMAX " (%s)", value, el->enum_name); - else - return asn__format_to_callback(cb, app_key, - "<%s/>", el->enum_name); - } else if(plainOrXER && specs && specs->strict_enumeration) { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } else { - return asn__format_to_callback(cb, app_key, - (specs && specs->field_unsigned) - ? "%" ASN_PRIuMAX - : "%" ASN_PRIdMAX, - value); - } - } else if(plainOrXER && specs && specs->strict_enumeration) { - /* - * Here and earlier, we cannot encode the ENUMERATED values - * if there is no corresponding identifier. - */ - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } - - /* Output in the long xx:yy:zz... format */ - /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ - for(p = scratch; buf < buf_end; buf++) { - const char * const h2c = "0123456789ABCDEF"; - if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { - /* Flush buffer */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - wrote += p - scratch; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x3a; /* ":" */ - } - if(p != scratch) - p--; /* Remove the last ":" */ - - wrote += p - scratch; - return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; -} - -/* - * INTEGER specific human-readable output. - */ -int -INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - ssize_t ret; - - (void)ilevel; - - if(!st || !st->buf) - ret = cb("", 8, app_key); - else - ret = INTEGER__dump(td, st, cb, app_key, 0); - - return (ret < 0) ? -1 : 0; -} - -struct e2v_key { - const char *start; - const char *stop; - const asn_INTEGER_enum_map_t *vemap; - const unsigned int *evmap; -}; -static int -INTEGER__compar_enum2value(const void *kp, const void *am) { - const struct e2v_key *key = (const struct e2v_key *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - const char *ptr, *end, *name; - - /* Remap the element (sort by different criterion) */ - el = key->vemap + key->evmap[el - key->vemap]; - - /* Compare strings */ - for(ptr = key->start, end = key->stop, name = el->enum_name; - ptr < end; ptr++, name++) { - if(*ptr != *name || !*name) - return *(const unsigned char *)ptr - - *(const unsigned char *)name; - } - return name[0] ? -1 : 0; -} - -static const asn_INTEGER_enum_map_t * -INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop) { - const asn_INTEGER_enum_map_t *el_found; - int count = specs ? specs->map_count : 0; - struct e2v_key key; - const char *lp; - - if(!count) return NULL; - - /* Guaranteed: assert(lstart < lstop); */ - /* Figure out the tag name */ - for(lstart++, lp = lstart; lp < lstop; lp++) { - switch(*lp) { - case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ - case 0x2f: /* '/' */ case 0x3e: /* '>' */ - break; - default: - continue; - } - break; - } - if(lp == lstop) return NULL; /* No tag found */ - lstop = lp; - - key.start = lstart; - key.stop = lstop; - key.vemap = specs->value2enum; - key.evmap = specs->enum2value; - el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, - specs->value2enum, count, sizeof(specs->value2enum[0]), - INTEGER__compar_enum2value); - if(el_found) { - /* Remap enum2value into value2enum */ - el_found = key.vemap + key.evmap[el_found - key.vemap]; - } - return el_found; -} - -static int -INTEGER__compar_value2enum(const void *kp, const void *am) { - long a = *(const long *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - long b = el->nat_value; - if(a < b) return -1; - else if(a == b) return 0; - else return 1; -} - -const asn_INTEGER_enum_map_t * -INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { - int count = specs ? specs->map_count : 0; - if(!count) return 0; - return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, - count, sizeof(specs->value2enum[0]), - INTEGER__compar_value2enum); -} - -static int -INTEGER_st_prealloc(INTEGER_t *st, int min_size) { - void *p = MALLOC(min_size + 1); - if(p) { - void *b = st->buf; - st->size = 0; - st->buf = p; - FREEMEM(b); - return 0; - } else { - return -1; - } -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t *st = (INTEGER_t *)sptr; - intmax_t dec_value; - intmax_t hex_value = 0; - const char *lp; - const char *lstart = (const char *)chunk_buf; - const char *lstop = lstart + chunk_size; - enum { - ST_LEADSPACE, - ST_SKIPSPHEX, - ST_WAITDIGITS, - ST_DIGITS, - ST_DIGITS_TRAILSPACE, - ST_HEXDIGIT1, - ST_HEXDIGIT2, - ST_HEXDIGITS_TRAILSPACE, - ST_HEXCOLON, - ST_END_ENUM, - ST_UNEXPECTED - } state = ST_LEADSPACE; - const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ - const char *dec_value_end = 0; - - if(chunk_size) - ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", - (long)chunk_size, *lstart, lstop[-1]); - - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - - /* - * We may have received a tag here. It will be processed inline. - * Use strtoul()-like code and serialize the result. - */ - for(lp = lstart; lp < lstop; lp++) { - int lv = *lp; - switch(lv) { - case 0x09: case 0x0a: case 0x0d: case 0x20: - switch(state) { - case ST_LEADSPACE: - case ST_DIGITS_TRAILSPACE: - case ST_HEXDIGITS_TRAILSPACE: - case ST_SKIPSPHEX: - continue; - case ST_DIGITS: - dec_value_end = lp; - state = ST_DIGITS_TRAILSPACE; - continue; - case ST_HEXCOLON: - state = ST_HEXDIGITS_TRAILSPACE; - continue; - default: - break; - } - break; - case 0x2d: /* '-' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x2b: /* '+' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: - switch(state) { - case ST_DIGITS: continue; - case ST_SKIPSPHEX: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = (lv - 0x30) << 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += (lv - 0x30); - state = ST_HEXCOLON; - st->buf[st->size++] = (uint8_t)hex_value; - continue; - case ST_HEXCOLON: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - dec_value = 0; - dec_value_start = lp; - /* FALL THROUGH */ - case ST_WAITDIGITS: - state = ST_DIGITS; - continue; - default: - break; - } - break; - case 0x3c: /* '<', start of XML encoded enumeration */ - if(state == ST_LEADSPACE) { - const asn_INTEGER_enum_map_t *el; - el = INTEGER_map_enum2value( - (const asn_INTEGER_specifics_t *) - td->specifics, lstart, lstop); - if(el) { - ASN_DEBUG("Found \"%s\" => %ld", - el->enum_name, el->nat_value); - dec_value = el->nat_value; - state = ST_END_ENUM; - lp = lstop - 1; - continue; - } - ASN_DEBUG("Unknown identifier for INTEGER"); - } - return XPBD_BROKEN_ENCODING; - case 0x3a: /* ':' */ - if(state == ST_HEXCOLON) { - /* This colon is expected */ - state = ST_HEXDIGIT1; - continue; - } else if(state == ST_DIGITS) { - /* The colon here means that we have - * decoded the first two hexadecimal - * places as a decimal value. - * Switch decoding mode. */ - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - } else { - ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); - break; - } - /* [A-Fa-f] */ - case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: - case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: - switch(state) { - case ST_SKIPSPHEX: - case ST_LEADSPACE: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - hex_value <<= 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - st->buf[st->size++] = (uint8_t)hex_value; - state = ST_HEXCOLON; - continue; - case ST_DIGITS: - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - default: - break; - } - break; - } - - /* Found extra non-numeric stuff */ - ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", - lv, (long)(lp - lstart)); - state = ST_UNEXPECTED; - break; - } - - switch(state) { - case ST_END_ENUM: - /* Got a complete and valid enumeration encoded as a tag. */ - break; - case ST_DIGITS: - dec_value_end = lstop; - /* FALL THROUGH */ - case ST_DIGITS_TRAILSPACE: - /* The last symbol encountered was a digit. */ - switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { - case ASN_STRTOX_OK: - if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { - break; - } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { - break; - } else { - /* - * We model INTEGER on long for XER, - * to avoid rewriting all the tests at once. - */ - ASN_DEBUG("INTEGER exceeds long range"); - } - /* Fall through */ - case ASN_STRTOX_ERROR_RANGE: - ASN_DEBUG("INTEGER decode %s hit range limit", td->name); - return XPBD_DECODER_LIMIT; - case ASN_STRTOX_ERROR_INVAL: - case ASN_STRTOX_EXPECT_MORE: - case ASN_STRTOX_EXTRA_DATA: - return XPBD_BROKEN_ENCODING; - } - break; - case ST_HEXCOLON: - case ST_HEXDIGITS_TRAILSPACE: - st->buf[st->size] = 0; /* Just in case termination */ - return XPBD_BODY_CONSUMED; - case ST_HEXDIGIT1: - case ST_HEXDIGIT2: - case ST_SKIPSPHEX: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - /* Content not found */ - return XPBD_NOT_BODY_IGNORE; - case ST_WAITDIGITS: - case ST_UNEXPECTED: - ASN_DEBUG("INTEGER: No useful digits (state %d)", state); - return XPBD_BROKEN_ENCODING; /* No digits */ - } - - /* - * Convert the result of parsing of enumeration or a straight - * decimal value into a BER representation. - */ - if(asn_imax2INTEGER(st, dec_value)) { - ASN_DEBUG("INTEGER decode %s conversion failed", td->name); - return XPBD_SYSTEM_FAILURE; - } - - return XPBD_BODY_CONSUMED; -} - -asn_dec_rval_t -INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(INTEGER_t), opt_mname, - buf_ptr, size, INTEGER__xer_body_decode); -} - -asn_enc_rval_t -INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t er = {0,0,0}; - - (void)ilevel; - (void)flags; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = INTEGER__dump(td, st, cb, app_key, 1); - if(er.encoded < 0) ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691-2008/11, #13.2.2, constrained whole number */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #11.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) - ASN__DECODE_FAILED; - - if(specs && specs->field_unsigned) { - unsigned long uvalue = 0; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - uvalue += ct->lower_bound; - if(asn_ulong2INTEGER(st, uvalue)) - ASN__DECODE_FAILED; - } else { - unsigned long uvalue = 0; - long svalue; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - if(per_long_range_unrebase(uvalue, ct->lower_bound, - ct->upper_bound, &svalue) - || asn_long2INTEGER(st, svalue)) { - ASN__DECODE_FAILED; - } - } - return rval; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len = 0; - void *p = NULL; - int ret = 0; - - /* Get the PER length */ - len = uper_get_length(pd, -1, 0, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value = 0; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_imax2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - - /* X.691-11/2008, #13.2.2, test if constrained whole number */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - /* #11.5.6 -> #11.3 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - if(specs && specs->field_unsigned) { - if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) - || ((unsigned long)value < (unsigned long)ct->lower_bound)) - || ((unsigned long)value > (unsigned long)ct->upper_bound) - ) { - ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", - value, ct->lower_bound, ct->upper_bound); - ASN__ENCODE_FAILED; - } - v = (unsigned long)value - (unsigned long)ct->lower_bound; - } else { - if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { - ASN__ENCODE_FAILED; - } - } - if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - int need_eom = 0; - ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #10.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if (ct->range_bits > 16) { - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - int length = 0, i; - long value = 0; - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, - max_range_bytes, i); - - if ((length = per_get_few_bits(pd, i)) < 0) - ASN__DECODE_FAILED; - - /* X.691 #12.2.6 length determinant + lb (1) */ - length += 1; - ASN_DEBUG("Got length %d", length); - if (aper_get_align(pd) != 0) - ASN__DECODE_FAILED; - while (length--) { - int buf = per_get_few_bits(pd, 8); - if (buf < 0) - ASN__DECODE_FAILED; - value += (((long)buf) << (8 * length)); - } - - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_uint642INTEGER(st, (unsigned long)value) - : asn_int642INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } else { - long value = 0; - if (ct->range_bits < 8) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else if (ct->range_bits == 8) { - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else { - /* Align */ - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, 16); - if(value < 0) ASN__DECODE_STARVED; - } - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_ulong2INTEGER(st, value) - : asn_long2INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } - return rval; - } else { - ASN__DECODE_FAILED; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len; - void *p; - int ret; - - /* Get the PER length */ - len = aper_get_length(pd, -1, -1, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_long2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - - /* #10.5.6 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - - v = value - ct->lower_bound; - - /* #12 <= 8 -> alignment ? */ - if (ct->range_bits < 8) { - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits == 8) { - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits <= 16) { - /* Consume the bytes to align on octet */ - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x0000 | v, - 16)) - ASN__ENCODE_FAILED; - } else { - /* TODO: extend to >64 bits */ - int64_t v64 = v; - int i, j; - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - - for (j = sizeof(int64_t) -1; j != 0; j--) { - int64_t val; - val = v64 >> (j * 8); - if (val != 0) - break; - } - - /* Putting length in the minimum number of bits ex: 5 = 3bits */ - if (per_put_few_bits(po, j, i)) - ASN__ENCODE_FAILED; - - /* Consume the bits to align on octet */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - /* Put the value */ - for (i = 0; i <= j; i++) { - if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) - ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - ssize_t mayEncode = aper_put_length(po, -1, end - buf); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -static intmax_t -asn__integer_convert(const uint8_t *b, const uint8_t *end) { - uintmax_t value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (uintmax_t)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -int -asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { - uint8_t *b, *end; - size_t size; - - /* Sanity checking */ - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - /* Cache the begin/end of the buffer */ - b = iptr->buf; /* Start of the INTEGER buffer */ - size = iptr->size; - end = b + size; /* Where to stop */ - - if(size > sizeof(intmax_t)) { - uint8_t *end1 = end - 1; - /* - * Slightly more advanced processing, - * able to process INTEGERs with >sizeof(intmax_t) bytes - * when the actual value is small, e.g. for intmax_t == int32_t - * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) - */ - /* Skip out the insignificant leading bytes */ - for(; b < end1; b++) { - switch(*b) { - case 0x00: if((b[1] & 0x80) == 0) continue; break; - case 0xff: if((b[1] & 0x80) != 0) continue; break; - } - break; - } - - size = end - b; - if(size > sizeof(intmax_t)) { - /* Still cannot fit the sizeof(intmax_t) */ - errno = ERANGE; - return -1; - } - } - - /* Shortcut processing of a corner case */ - if(end == b) { - *lptr = 0; - return 0; - } - - *lptr = asn__integer_convert(b, end); - return 0; -} - -/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ -int -asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { - uint8_t *b, *end; - uintmax_t value; - size_t size; - - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - b = iptr->buf; - size = iptr->size; - end = b + size; - - /* If all extra leading bytes are zeroes, ignore them */ - for(; size > sizeof(value); b++, size--) { - if(*b) { - /* Value won't fit into uintmax_t */ - errno = ERANGE; - return -1; - } - } - - /* Conversion engine */ - for(value = 0; b < end; b++) - value = (value << 8) | *b; - - *lptr = value; - return 0; -} - -int -asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= ((~(uintmax_t)0) >> 1)) { - return asn_imax2INTEGER(st, value); - } - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ - for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)(long *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -int -asn_INTEGER2long(const INTEGER_t *iptr, long *l) { - intmax_t v; - if(asn_INTEGER2imax(iptr, &v) == 0) { - if(v < LONG_MIN || v > LONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { - uintmax_t v; - if(asn_INTEGER2umax(iptr, &v) == 0) { - if(v > ULONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_long2INTEGER(INTEGER_t *st, long value) { - return asn_imax2INTEGER(st, value); -} - -int -asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { - return asn_imax2INTEGER(st, value); -} - - -int -asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= INT64_MAX) - return asn_int642INTEGER(st, value); - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; - for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_int642INTEGER(INTEGER_t *st, int64_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtol/strtoimax(3). - */ -enum asn_strtox_result_e -asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { - int sign = 1; - intmax_t value; - -#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) - const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; - intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; -#undef ASN1_INTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - last_digit_max++; - sign = -1; - /* FALL THROUGH */ - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - if(sign > 0) { - value = value * 10 + d; - } else { - sign = 1; - value = -value * 10 - d; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *intp = sign * value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *intp = sign * value; - return ASN_STRTOX_OK; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtoul/strtoumax(3). - */ -enum asn_strtox_result_e -asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { - uintmax_t value; - -#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) - const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; - uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; -#undef ASN1_UINTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - return ASN_STRTOX_ERROR_INVAL; - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - unsigned int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - value = value * 10 + d; - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *uintp = value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *uintp = value; - return ASN_STRTOX_OK; -} - -enum asn_strtox_result_e -asn_strtol_lim(const char *str, const char **end, long *lp) { - intmax_t value; - switch(asn_strtoimax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -enum asn_strtox_result_e -asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { - uintmax_t value; - switch(asn_strtoumax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -int -INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const INTEGER_t *a = aptr; - const INTEGER_t *b = bptr; - - (void)td; - - if(a && b) { - if(a->size && b->size) { - int sign_a = (a->buf[0] & 0x80) ? -1 : 1; - int sign_b = (b->buf[0] & 0x80) ? -1 : 1; - - if(sign_a < sign_b) return -1; - if(sign_a > sign_b) return 1; - - /* The shortest integer wins, unless comparing negatives */ - if(a->size < b->size) { - return -1 * sign_a; - } else if(a->size > b->size) { - return 1 * sign_b; - } - - return sign_a * memcmp(a->buf, b->buf, a->size); - } else if(a->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (1) * sign; - } else if(b->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (-1) * sign; - } else { - return 0; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -asn_random_fill_result_t -INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - INTEGER_t *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (INTEGER_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - if(asn_imax2INTEGER(st, value)) { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return result_failed; - } else { - *sptr = st; - result_ok.length = st->size; - return result_ok; - } -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/INTEGER.h b/3rdparty/E2SM-gNB-X2-V4.0.1/INTEGER.h deleted file mode 100644 index f776c07..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/INTEGER.h +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _INTEGER_H_ -#define _INTEGER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; - -extern asn_TYPE_descriptor_t asn_DEF_INTEGER; -extern asn_TYPE_operation_t asn_OP_INTEGER; - -/* Map with to integer value association */ -typedef struct asn_INTEGER_enum_map_s { - long nat_value; /* associated native integer value */ - size_t enum_len; /* strlen("tag") */ - const char *enum_name; /* "tag" */ -} asn_INTEGER_enum_map_t; - -/* This type describes an enumeration for INTEGER and ENUMERATED types */ -typedef struct asn_INTEGER_specifics_s { - const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ - const unsigned int *enum2value; /* "tag" => N; sorted by tag */ - int map_count; /* Elements in either map */ - int extension; /* This map is extensible */ - int strict_enumeration; /* Enumeration set is fixed */ - int field_width; /* Size of native integer */ - int field_unsigned; /* Signed=0, unsigned=1 */ -} asn_INTEGER_specifics_t; - -#define INTEGER_free ASN__PRIMITIVE_TYPE_free -#define INTEGER_decode_ber ber_decode_primitive -#define INTEGER_constraint asn_generic_no_constraint -asn_struct_print_f INTEGER_print; -asn_struct_compare_f INTEGER_compare; -der_type_encoder_f INTEGER_encode_der; -xer_type_decoder_f INTEGER_decode_xer; -xer_type_encoder_f INTEGER_encode_xer; -oer_type_decoder_f INTEGER_decode_oer; -oer_type_encoder_f INTEGER_encode_oer; -per_type_decoder_f INTEGER_decode_uper; -per_type_encoder_f INTEGER_encode_uper; -per_type_decoder_f INTEGER_decode_aper; -per_type_encoder_f INTEGER_encode_aper; -asn_random_fill_f INTEGER_random_fill; - -/*********************************** - * Some handy conversion routines. * - ***********************************/ - -/* - * Natiwe size-independent conversion of native integers to/from INTEGER. - * (l_size) is in bytes. - * Returns 0 if it was possible to convert, -1 otherwise. - * -1/EINVAL: Mandatory argument missing - * -1/ERANGE: Value encoded is out of range for long representation - * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). - */ -int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); -int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); -int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); -int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); - -/* - * Size-specific conversion helpers. - */ -int asn_INTEGER2long(const INTEGER_t *i, long *l); -int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); -int asn_long2INTEGER(INTEGER_t *i, long l); -int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); -int asn_int642INTEGER(INTEGER_t *i, int64_t l); -int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); - -/* A version of strtol/strtoimax(3) with nicer error reporting. */ -enum asn_strtox_result_e { - ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ - ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ - ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ - ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ - ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ -}; -enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, - long *l); -enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, - unsigned long *l); -enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, - intmax_t *l); -enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, - uintmax_t *l); - -/* - * Convert the integer value into the corresponding enumeration map entry. - */ -const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( - const asn_INTEGER_specifics_t *specs, long value); - -#ifdef __cplusplus -} -#endif - -#endif /* _INTEGER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/Makefile.am.libasncodec b/3rdparty/E2SM-gNB-X2-V4.0.1/Makefile.am.libasncodec deleted file mode 100644 index 151b249..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/Makefile.am.libasncodec +++ /dev/null @@ -1,201 +0,0 @@ -ASN_MODULE_SRCS= \ - E2_GlobalENB-ID.c \ - E2_ENB-ID.c \ - E2_GlobalGNB-ID.c \ - E2_GNB-ID.c \ - E2_PLMN-Identity.c \ - E2_Criticality.c \ - E2_Presence.c \ - E2_ProcedureCode.c \ - E2_ProtocolIE-ID.c \ - E2_E2SM-gNB-X2-eventTriggerDefinition.c \ - E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.c \ - E2_E2SM-gNB-X2-actionDefinition.c \ - E2_E2SM-gNB-X2-ActionDefinitionChoice.c \ - E2_E2SM-gNB-X2-ActionDefinition-Format2.c \ - E2_E2SM-gNB-X2-indicationHeader.c \ - E2_E2SM-gNB-X2-IndicationHeaderChoice.c \ - E2_E2SM-gNB-X2-indicationMessage.c \ - E2_E2SM-gNB-X2-IndicationMessageChoice.c \ - E2_E2SM-gNB-X2-callProcessID.c \ - E2_E2SM-gNB-X2-CallProcessIDChoice.c \ - E2_E2SM-gNB-X2-controlHeader.c \ - E2_E2SM-gNB-X2-ControlHeaderChoice.c \ - E2_E2SM-gNB-X2-controlMessage.c \ - E2_E2SM-gNB-X2-ControlMessageChoice.c \ - E2_E2SM-gNB-X2-RANfunction-Definition.c \ - E2_ActionParameter-Item.c \ - E2_ActionParameter-ID.c \ - E2_ActionParameter-Value.c \ - E2_CallProcess-ID.c \ - E2_Interface-ID.c \ - E2_InterfaceDirection.c \ - E2_InterfaceMessage.c \ - E2_InterfaceMessageType.c \ - E2_TypeOfMessage.c \ - E2_InterfaceProtocolIE-Item.c \ - E2_InterfaceProtocolIE-ID.c \ - E2_InterfaceProtocolIE-Test.c \ - E2_InterfaceProtocolIE-Value.c \ - E2_RANfunction-Name.c \ - E2_RANParameter-Item.c \ - E2_RANparameterDef-Item.c \ - E2_RANParameter-ID.c \ - E2_RANParameter-Name.c \ - E2_RANParameter-Test.c \ - E2_RANParameter-Type.c \ - E2_RANParameter-Value.c \ - E2_RANueGroup-Item.c \ - E2_RANimperativePolicy.c \ - E2_RANueGroupID.c \ - E2_RANueGroupDefinition.c \ - E2_RANueGroupDef-Item.c \ - E2_RIC-ControlStyle-List.c \ - E2_RIC-EventTriggerStyle-List.c \ - E2_RIC-InsertStyle-List.c \ - E2_RIC-PolicyStyle-List.c \ - E2_RIC-ReportStyle-List.c \ - E2_RIC-Format-Type.c \ - E2_RIC-Style-Type.c \ - E2_RIC-Style-Name.c \ - E2_Style-ID.c \ - E2_TimeStamp.c - -ASN_MODULE_HDRS= \ - E2_GlobalENB-ID.h \ - E2_ENB-ID.h \ - E2_GlobalGNB-ID.h \ - E2_GNB-ID.h \ - E2_PLMN-Identity.h \ - E2_Criticality.h \ - E2_Presence.h \ - E2_ProcedureCode.h \ - E2_ProtocolIE-ID.h \ - E2_E2SM-gNB-X2-eventTriggerDefinition.h \ - E2_E2SM-gNB-X2-EventTriggerDefinitionChoice.h \ - E2_E2SM-gNB-X2-actionDefinition.h \ - E2_E2SM-gNB-X2-ActionDefinitionChoice.h \ - E2_E2SM-gNB-X2-ActionDefinition-Format2.h \ - E2_E2SM-gNB-X2-indicationHeader.h \ - E2_E2SM-gNB-X2-IndicationHeaderChoice.h \ - E2_E2SM-gNB-X2-indicationMessage.h \ - E2_E2SM-gNB-X2-IndicationMessageChoice.h \ - E2_E2SM-gNB-X2-callProcessID.h \ - E2_E2SM-gNB-X2-CallProcessIDChoice.h \ - E2_E2SM-gNB-X2-controlHeader.h \ - E2_E2SM-gNB-X2-ControlHeaderChoice.h \ - E2_E2SM-gNB-X2-controlMessage.h \ - E2_E2SM-gNB-X2-ControlMessageChoice.h \ - E2_E2SM-gNB-X2-RANfunction-Definition.h \ - E2_ActionParameter-Item.h \ - E2_ActionParameter-ID.h \ - E2_ActionParameter-Value.h \ - E2_CallProcess-ID.h \ - E2_Interface-ID.h \ - E2_InterfaceDirection.h \ - E2_InterfaceMessage.h \ - E2_InterfaceMessageType.h \ - E2_TypeOfMessage.h \ - E2_InterfaceProtocolIE-Item.h \ - E2_InterfaceProtocolIE-ID.h \ - E2_InterfaceProtocolIE-Test.h \ - E2_InterfaceProtocolIE-Value.h \ - E2_RANfunction-Name.h \ - E2_RANParameter-Item.h \ - E2_RANparameterDef-Item.h \ - E2_RANParameter-ID.h \ - E2_RANParameter-Name.h \ - E2_RANParameter-Test.h \ - E2_RANParameter-Type.h \ - E2_RANParameter-Value.h \ - E2_RANueGroup-Item.h \ - E2_RANimperativePolicy.h \ - E2_RANueGroupID.h \ - E2_RANueGroupDefinition.h \ - E2_RANueGroupDef-Item.h \ - E2_RIC-ControlStyle-List.h \ - E2_RIC-EventTriggerStyle-List.h \ - E2_RIC-InsertStyle-List.h \ - E2_RIC-PolicyStyle-List.h \ - E2_RIC-ReportStyle-List.h \ - E2_RIC-Format-Type.h \ - E2_RIC-Style-Type.h \ - E2_RIC-Style-Name.h \ - E2_Style-ID.h \ - E2_TimeStamp.h - -ASN_MODULE_HDRS+=OPEN_TYPE.h -ASN_MODULE_SRCS+=OPEN_TYPE.c -ASN_MODULE_HDRS+=constr_CHOICE.h -ASN_MODULE_HDRS+=BOOLEAN.h -ASN_MODULE_SRCS+=BOOLEAN.c -ASN_MODULE_HDRS+=INTEGER.h -ASN_MODULE_SRCS+=INTEGER.c -ASN_MODULE_HDRS+=NativeEnumerated.h -ASN_MODULE_SRCS+=NativeEnumerated.c -ASN_MODULE_HDRS+=NativeInteger.h -ASN_MODULE_SRCS+=NativeInteger.c -ASN_MODULE_HDRS+=PrintableString.h -ASN_MODULE_SRCS+=PrintableString.c -ASN_MODULE_HDRS+=OCTET_STRING.h -ASN_MODULE_HDRS+=asn_SEQUENCE_OF.h -ASN_MODULE_SRCS+=asn_SEQUENCE_OF.c -ASN_MODULE_HDRS+=asn_SET_OF.h -ASN_MODULE_SRCS+=asn_SET_OF.c -ASN_MODULE_SRCS+=constr_CHOICE.c -ASN_MODULE_HDRS+=constr_SEQUENCE.h -ASN_MODULE_SRCS+=constr_SEQUENCE.c -ASN_MODULE_HDRS+=constr_SEQUENCE_OF.h -ASN_MODULE_SRCS+=constr_SEQUENCE_OF.c -ASN_MODULE_HDRS+=constr_SET_OF.h -ASN_MODULE_SRCS+=constr_SET_OF.c -ASN_MODULE_HDRS+=asn_application.h -ASN_MODULE_SRCS+=asn_application.c -ASN_MODULE_HDRS+=asn_ioc.h -ASN_MODULE_HDRS+=asn_system.h -ASN_MODULE_HDRS+=asn_codecs.h -ASN_MODULE_HDRS+=asn_internal.h -ASN_MODULE_SRCS+=asn_internal.c -ASN_MODULE_HDRS+=asn_random_fill.h -ASN_MODULE_SRCS+=asn_random_fill.c -ASN_MODULE_HDRS+=asn_bit_data.h -ASN_MODULE_SRCS+=asn_bit_data.c -ASN_MODULE_SRCS+=OCTET_STRING.c -ASN_MODULE_HDRS+=BIT_STRING.h -ASN_MODULE_SRCS+=BIT_STRING.c -ASN_MODULE_SRCS+=asn_codecs_prim.c -ASN_MODULE_HDRS+=asn_codecs_prim.h -ASN_MODULE_HDRS+=ber_tlv_length.h -ASN_MODULE_SRCS+=ber_tlv_length.c -ASN_MODULE_HDRS+=ber_tlv_tag.h -ASN_MODULE_SRCS+=ber_tlv_tag.c -ASN_MODULE_HDRS+=ber_decoder.h -ASN_MODULE_SRCS+=ber_decoder.c -ASN_MODULE_HDRS+=der_encoder.h -ASN_MODULE_SRCS+=der_encoder.c -ASN_MODULE_HDRS+=constr_TYPE.h -ASN_MODULE_SRCS+=constr_TYPE.c -ASN_MODULE_HDRS+=constraints.h -ASN_MODULE_SRCS+=constraints.c -ASN_MODULE_HDRS+=xer_support.h -ASN_MODULE_SRCS+=xer_support.c -ASN_MODULE_HDRS+=xer_decoder.h -ASN_MODULE_SRCS+=xer_decoder.c -ASN_MODULE_HDRS+=xer_encoder.h -ASN_MODULE_SRCS+=xer_encoder.c -ASN_MODULE_HDRS+=per_support.h -ASN_MODULE_SRCS+=per_support.c -ASN_MODULE_HDRS+=per_decoder.h -ASN_MODULE_SRCS+=per_decoder.c -ASN_MODULE_HDRS+=per_encoder.h -ASN_MODULE_SRCS+=per_encoder.c -ASN_MODULE_HDRS+=per_opentype.h -ASN_MODULE_SRCS+=per_opentype.c - -ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT - -lib_LTLIBRARIES+=libasncodec.la -libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) -libasncodec_la_CPPFLAGS=-I$(top_srcdir)/ -libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) -libasncodec_la_LDFLAGS=-lm diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeEnumerated.c b/3rdparty/E2SM-gNB-X2-V4.0.1/NativeEnumerated.c deleted file mode 100644 index 800da97..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeEnumerated.c +++ /dev/null @@ -1,367 +0,0 @@ -/*- - * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeEnumerated basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeEnumerated = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeEnumerated_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeEnumerated_decode_oer, - NativeEnumerated_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeEnumerated_decode_uper, - NativeEnumerated_encode_uper, - NativeEnumerated_decode_aper, - NativeEnumerated_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeEnumerated_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { - "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ - "ENUMERATED", - &asn_OP_NativeEnumerated, - asn_DEF_NativeEnumerated_tags, - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - asn_DEF_NativeEnumerated_tags, /* Same as above */ - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -asn_enc_rval_t -NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - const asn_INTEGER_enum_map_t *el; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - el = INTEGER_map_value2enum(specs, *native); - if(el) { - er.encoded = - asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); - if(er.encoded < 0) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } else { - ASN_DEBUG( - "ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -static int -NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { - const asn_INTEGER_enum_map_t *a = ap; - const asn_INTEGER_enum_map_t *b = bp; - if(a->nat_value == b->nat_value) - return 0; - if(a->nat_value < b->nat_value) - return -1; - return 1; -} - -asn_enc_rval_t -NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct; - int inext = 0; - asn_INTEGER_enum_map_t key; - const asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, value, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(!specs->extension) - ASN__ENCODE_FAILED; - - /* - * X.691, #10.6: normally small non-negative whole number; - */ - ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", - value, specs->extension, inext, - value - (inext ? (specs->extension - 1) : 0)); - if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - /* Deal with APER padding */ - if(ct && ct->upper_bound >= 255) { - int padding = 0; - padding = (8 - (pd->moved % 8)) % 8; - ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); - ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); - if(padding > 0) - per_get_few_bits(pd, padding); - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -asn_enc_rval_t -NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct; - int inext = 0; - asn_INTEGER_enum_map_t key; - asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - if(native < 0) ASN__ENCODE_FAILED; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, value, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(!specs->extension) - ASN__ENCODE_FAILED; - - /* - * X.691, #10.6: normally small non-negative whole number; - */ - ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", - value, specs->extension, inext, - value - (inext ? (specs->extension - 1) : 0)); - if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeEnumerated.h b/3rdparty/E2SM-gNB-X2-V4.0.1/NativeEnumerated.h deleted file mode 100644 index 459f0e6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeEnumerated.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This type differs from the standard ENUMERATED in that it is modelled using - * the fixed machine type (long, int, short), so it can hold only values of - * limited length. There is no type (i.e., NativeEnumerated_t, any integer type - * will do). - * This type may be used when integer range is limited by subtype constraints. - */ -#ifndef _NativeEnumerated_H_ -#define _NativeEnumerated_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; -extern asn_TYPE_operation_t asn_OP_NativeEnumerated; - -xer_type_encoder_f NativeEnumerated_encode_xer; -oer_type_decoder_f NativeEnumerated_decode_oer; -oer_type_encoder_f NativeEnumerated_encode_oer; -per_type_decoder_f NativeEnumerated_decode_uper; -per_type_encoder_f NativeEnumerated_encode_uper; -per_type_decoder_f NativeEnumerated_decode_aper; -per_type_encoder_f NativeEnumerated_encode_aper; - -#define NativeEnumerated_free NativeInteger_free -#define NativeEnumerated_print NativeInteger_print -#define NativeEnumerated_compare NativeInteger_compare -#define NativeEnumerated_random_fill NativeInteger_random_fill -#define NativeEnumerated_constraint asn_generic_no_constraint -#define NativeEnumerated_decode_ber NativeInteger_decode_ber -#define NativeEnumerated_encode_der NativeInteger_encode_der -#define NativeEnumerated_decode_xer NativeInteger_decode_xer - -#ifdef __cplusplus -} -#endif - -#endif /* _NativeEnumerated_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeInteger.c b/3rdparty/E2SM-gNB-X2-V4.0.1/NativeInteger.c deleted file mode 100644 index 316e872..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeInteger.c +++ /dev/null @@ -1,550 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeInteger basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeInteger = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeInteger_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeInteger_decode_oer, /* OER decoder */ - NativeInteger_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeInteger_decode_uper, /* Unaligned PER decoder */ - NativeInteger_encode_uper, /* Unaligned PER encoder */ - NativeInteger_decode_aper, /* Aligned PER decoder */ - NativeInteger_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeInteger_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeInteger = { - "INTEGER", /* The ASN.1 type is still INTEGER */ - "INTEGER", - &asn_OP_NativeInteger, - asn_DEF_NativeInteger_tags, - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - asn_DEF_NativeInteger_tags, /* Same as above */ - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode INTEGER type. - */ -asn_dec_rval_t -NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **nint_ptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - long *native = (long *)*nint_ptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(native == NULL) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(native == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * ASN.1 encoded INTEGER: buf_ptr, length - * Fill the native, at the same time checking for overflow. - * If overflow occured, return with RC_FAIL. - */ - { - INTEGER_t tmp; - union { - const void *constbuf; - void *nonconstbuf; - } unconst_buf; - long l; - - unconst_buf.constbuf = buf_ptr; - tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; - tmp.size = length; - - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&tmp, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - - *native = l; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", - (long)rval.consumed, (long)length, td->name, (long)*native); - - return rval; -} - -/* - * Encode the NativeInteger using the standard INTEGER type DER encoder. - */ -asn_enc_rval_t -NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ - asn_enc_rval_t erval = {0,0,0}; - INTEGER_t tmp; - -#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ - - tmp.buf = (uint8_t *)&native; - tmp.size = sizeof(native); - -#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ - uint8_t buf[sizeof(native)]; - uint8_t *p; - - /* Prepare a fake INTEGER */ - for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) - *p = (uint8_t)native; - - tmp.buf = buf; - tmp.size = sizeof(buf); -#endif /* WORDS_BIGENDIAN */ - - /* Encode fake INTEGER */ - erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); - if(erval.structure_ptr == &tmp) { - erval.structure_ptr = ptr; - } - return erval; -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -asn_dec_rval_t -NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - INTEGER_t st; - void *st_ptr = (void *)&st; - long *native = (long *)*sptr; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&st, 0, sizeof(st)); - rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, - opt_mname, buf_ptr, size); - if(rval.code == RC_OK) { - long l; - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&st, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - } else { - *native = l; - } - } else { - /* - * Cannot restart from the middle; - * there is no place to save state in the native type. - * Request a continuation from the very beginning. - */ - rval.consumed = 0; - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); - return rval; -} - - -asn_enc_rval_t -NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit int */ - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - er.encoded = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) - || cb(scratch, er.encoded, app_key) < 0) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_uper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -asn_dec_rval_t -NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_aper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -/* - * INTEGER specific human-readable output. - */ -int -NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - const long *native = (const long *)sptr; - char scratch[32]; /* Enough for 64-bit int */ - int ret; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(native) { - long value = *native; - ret = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) ? "%lu" : "%ld", value); - assert(ret > 0 && (size_t)ret < sizeof(scratch)); - if(cb(scratch, ret, app_key) < 0) return -1; - if(specs && (value >= 0 || !specs->field_unsigned)) { - const asn_INTEGER_enum_map_t *el = - INTEGER_map_value2enum(specs, value); - if(el) { - if(cb(" (", 2, app_key) < 0) return -1; - if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; - if(cb(")", 1, app_key) < 0) return -1; - } - } - return 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", - td->name, method, ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(long)); - break; - } -} - -int -NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - (void)td; - - if(aptr && bptr) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - const unsigned long *a = aptr; - const unsigned long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } else { - const long *a = aptr; - const long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } - } else if(!aptr) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - long *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (long *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - *sptr = st; - *st = value; - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeInteger.h b/3rdparty/E2SM-gNB-X2-V4.0.1/NativeInteger.h deleted file mode 100644 index c74406a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/NativeInteger.h +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This type differs from the standard INTEGER in that it is modelled using - * the fixed machine type (long, int, short), so it can hold only values of - * limited length. There is no type (i.e., NativeInteger_t, any integer type - * will do). - * This type may be used when integer range is limited by subtype constraints. - */ -#ifndef _NativeInteger_H_ -#define _NativeInteger_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; -extern asn_TYPE_operation_t asn_OP_NativeInteger; - -asn_struct_free_f NativeInteger_free; -asn_struct_print_f NativeInteger_print; -asn_struct_compare_f NativeInteger_compare; -ber_type_decoder_f NativeInteger_decode_ber; -der_type_encoder_f NativeInteger_encode_der; -xer_type_decoder_f NativeInteger_decode_xer; -xer_type_encoder_f NativeInteger_encode_xer; -oer_type_decoder_f NativeInteger_decode_oer; -oer_type_encoder_f NativeInteger_encode_oer; -per_type_decoder_f NativeInteger_decode_uper; -per_type_encoder_f NativeInteger_encode_uper; -per_type_decoder_f NativeInteger_decode_aper; -per_type_encoder_f NativeInteger_encode_aper; -asn_random_fill_f NativeInteger_random_fill; - -#define NativeInteger_constraint asn_generic_no_constraint - -#ifdef __cplusplus -} -#endif - -#endif /* _NativeInteger_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/OCTET_STRING.c b/3rdparty/E2SM-gNB-X2-V4.0.1/OCTET_STRING.c deleted file mode 100644 index 432ce5a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/OCTET_STRING.c +++ /dev/null @@ -1,2409 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* for .bits_unused member */ -#include - -/* - * OCTET STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { - sizeof(OCTET_STRING_t), - offsetof(OCTET_STRING_t, _asn_ctx), - ASN_OSUBV_STR -}; - -asn_TYPE_operation_t asn_OP_OCTET_STRING = { - OCTET_STRING_free, - OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - OCTET_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { - "OCTET STRING", /* Canonical name */ - "OCTET_STRING", /* XML tag name */ - &asn_OP_OCTET_STRING, - asn_DEF_OCTET_STRING_tags, - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - asn_DEF_OCTET_STRING_tags, /* Same as above */ - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs -}; - -#undef _CH_PHASE -#undef NEXT_PHASE -#undef PREV_PHASE -#define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ - } while(0) -#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) -#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -#undef APPEND -#define APPEND(bufptr, bufsize) do { \ - size_t _bs = (bufsize); /* Append size */ \ - size_t _ns = ctx->context; /* Allocated now */ \ - size_t _es = st->size + _bs; /* Expected size */ \ - /* int is really a typeof(st->size): */ \ - if((int)_es < 0) RETURN(RC_FAIL); \ - if(_ns <= _es) { \ - void *ptr; \ - /* Be nice and round to the memory allocator */ \ - do { _ns = _ns ? _ns << 1 : 16; } \ - while(_ns <= _es); \ - /* int is really a typeof(st->size): */ \ - if((int)_ns < 0) RETURN(RC_FAIL); \ - ptr = REALLOC(st->buf, _ns); \ - if(ptr) { \ - st->buf = (uint8_t *)ptr; \ - ctx->context = _ns; \ - } else { \ - RETURN(RC_FAIL); \ - } \ - ASN_DEBUG("Reallocating into %ld", (long)_ns); \ - } \ - memcpy(st->buf + st->size, bufptr, _bs); \ - /* Convenient nul-termination */ \ - st->buf[_es] = '\0'; \ - st->size = _es; \ - } while(0) - -/* - * The main reason why ASN.1 is still alive is that too much time and effort - * is necessary for learning it more or less adequately, thus creating a gut - * necessity to demonstrate that aquired skill everywhere afterwards. - * No, I am not going to explain what the following stuff is. - */ -struct _stack_el { - ber_tlv_len_t left; /* What's left to read (or -1) */ - ber_tlv_len_t got; /* What was actually processed */ - unsigned cont_level; /* Depth of subcontainment */ - int want_nulls; /* Want null "end of content" octets? */ - int bits_chopped; /* Flag in BIT STRING mode */ - ber_tlv_tag_t tag; /* For debugging purposes */ - struct _stack_el *prev; - struct _stack_el *next; -}; -struct _stack { - struct _stack_el *tail; - struct _stack_el *cur_ptr; -}; - -static struct _stack_el * -OS__add_stack_el(struct _stack *st) { - struct _stack_el *nel; - - /* - * Reuse the old stack frame or allocate a new one. - */ - if(st->cur_ptr && st->cur_ptr->next) { - nel = st->cur_ptr->next; - nel->bits_chopped = 0; - nel->got = 0; - /* Retain the nel->cont_level, it's correct. */ - } else { - nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); - if(nel == NULL) - return NULL; - - if(st->tail) { - /* Increase a subcontainment depth */ - nel->cont_level = st->tail->cont_level + 1; - st->tail->next = nel; - } - nel->prev = st->tail; - st->tail = nel; - } - - st->cur_ptr = nel; - - return nel; -} - -static struct _stack * -_new_stack(void) { - return (struct _stack *)CALLOC(1, sizeof(struct _stack)); -} - -/* - * Decode OCTET STRING type. - */ -asn_dec_rval_t -OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - asn_dec_rval_t rval; - asn_struct_ctx_t *ctx; - ssize_t consumed_myself = 0; - struct _stack *stck; /* Expectations stack structure */ - struct _stack_el *sel = 0; /* Stack element */ - int tlv_constr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - - ASN_DEBUG("Decoding %s as %s (frame %ld)", - td->name, - (type_variant == ASN_OSUBV_STR) ? - "OCTET STRING" : "OS-SpecialCase", - (long)size); - - /* - * Create the string if does not exist. - */ - if(st == NULL) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) RETURN(RC_FAIL); - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - switch(ctx->phase) { - case 0: - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, ctx, - buf_ptr, size, tag_mode, -1, - &ctx->left, &tlv_constr); - if(rval.code != RC_OK) - return rval; - - if(tlv_constr) { - /* - * Complex operation, requires stack of expectations. - */ - ctx->ptr = _new_stack(); - if(!ctx->ptr) { - RETURN(RC_FAIL); - } - } else { - /* - * Jump into stackless primitive decoding. - */ - _CH_PHASE(ctx, 3); - if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) - APPEND(buf_ptr, rval.consumed); - ADVANCE(rval.consumed); - goto phase3; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - phase1: - /* - * Fill the stack with expectations. - */ - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - do { - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_tag_t expected_tag; - ssize_t tl, ll, tlvl; - /* This one works even if (sel->left == -1) */ - size_t Left = ((!sel||(size_t)sel->left >= size) - ?size:(size_t)sel->left); - - - ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)(sel?sel->got:0) - ); - if(sel && sel->left <= 0 && sel->want_nulls == 0) { - if(sel->prev) { - struct _stack_el *prev = sel->prev; - if(prev->left != -1) { - if(prev->left < sel->got) - RETURN(RC_FAIL); - prev->left -= sel->got; - } - prev->got += sel->got; - sel = stck->cur_ptr = prev; - if(!sel) break; - tlv_constr = 1; - continue; - } else { - sel = stck->cur_ptr = 0; - break; /* Nothing to wait */ - } - } - - tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); - ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", - (long)size, (long)Left, sel?"":"!", - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)tl); - switch(tl) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); - - ll = ber_fetch_length(tlv_constr, - (const char *)buf_ptr + tl,Left - tl,&tlv_len); - ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", - ber_tlv_tag_string(tlv_tag), tlv_constr, - (long)Left, (long)tl, (long)tlv_len, (long)ll); - switch(ll) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - if(sel && sel->want_nulls - && ((const uint8_t *)buf_ptr)[0] == 0 - && ((const uint8_t *)buf_ptr)[1] == 0) - { - - ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); - - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND("\0\0", 2); - - ADVANCE(2); - sel->got += 2; - if(sel->left != -1) { - sel->left -= 2; /* assert(sel->left >= 2) */ - } - - sel->want_nulls--; - if(sel->want_nulls == 0) { - /* Move to the next expectation */ - sel->left = 0; - tlv_constr = 1; - } - - continue; - } - - /* - * Set up expected tags, - * depending on ASN.1 type being decoded. - */ - switch(type_variant) { - case ASN_OSUBV_BIT: - /* X.690: 8.6.4.1, NOTE 2 */ - /* Fall through */ - case ASN_OSUBV_STR: - default: - if(sel) { - unsigned level = sel->cont_level; - if(level < td->all_tags_count) { - expected_tag = td->all_tags[level]; - break; - } else if(td->all_tags_count) { - expected_tag = td->all_tags - [td->all_tags_count - 1]; - break; - } - /* else, Fall through */ - } - /* Fall through */ - case ASN_OSUBV_ANY: - expected_tag = tlv_tag; - break; - } - - - if(tlv_tag != expected_tag) { - char buf[2][32]; - ber_tlv_tag_snprint(tlv_tag, - buf[0], sizeof(buf[0])); - ber_tlv_tag_snprint(td->tags[td->tags_count-1], - buf[1], sizeof(buf[1])); - ASN_DEBUG("Tag does not match expectation: %s != %s", - buf[0], buf[1]); - RETURN(RC_FAIL); - } - - tlvl = tl + ll; /* Combined length of T and L encoding */ - if((tlv_len + tlvl) < 0) { - /* tlv_len value is too big */ - ASN_DEBUG("TLV encoding + length (%ld) is too big", - (long)tlv_len); - RETURN(RC_FAIL); - } - - /* - * Append a new expectation. - */ - sel = OS__add_stack_el(stck); - if(!sel) RETURN(RC_FAIL); - - sel->tag = tlv_tag; - - sel->want_nulls = (tlv_len==-1); - if(sel->prev && sel->prev->left != -1) { - /* Check that the parent frame is big enough */ - if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) - RETURN(RC_FAIL); - if(tlv_len == -1) - sel->left = sel->prev->left - tlvl; - else - sel->left = tlv_len; - } else { - sel->left = tlv_len; - } - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND(buf_ptr, tlvl); - sel->got += tlvl; - ADVANCE(tlvl); - - ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", - (long)sel->got, (long)sel->left, - sel->want_nulls, sel->cont_level); - - } while(tlv_constr); - if(sel == NULL) { - /* Finished operation, "phase out" */ - ASN_DEBUG("Phase out"); - _CH_PHASE(ctx, +3); - break; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 2: - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", - (long)sel->left, (long)size, (long)sel->got, - sel->want_nulls); - { - ber_tlv_len_t len; - - assert(sel->left >= 0); - - len = ((ber_tlv_len_t)size < sel->left) - ? (ber_tlv_len_t)size : sel->left; - if(len > 0) { - if(type_variant == ASN_OSUBV_BIT - && sel->bits_chopped == 0) { - /* Put the unused-bits-octet away */ - st->bits_unused = *(const uint8_t *)buf_ptr; - APPEND(((const char *)buf_ptr+1), (len - 1)); - sel->bits_chopped = 1; - } else { - APPEND(buf_ptr, len); - } - ADVANCE(len); - sel->left -= len; - sel->got += len; - } - - if(sel->left) { - ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", - (long)sel->left, (long)size, sel->want_nulls); - RETURN(RC_WMORE); - } - - PREV_PHASE(ctx); - goto phase1; - } - break; - case 3: - phase3: - /* - * Primitive form, no stack required. - */ - assert(ctx->left >= 0); - - if(size < (size_t)ctx->left) { - if(!size) RETURN(RC_WMORE); - if(type_variant == ASN_OSUBV_BIT && !ctx->context) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, size); - assert(ctx->context > 0); - ctx->left -= size; - ADVANCE(size); - RETURN(RC_WMORE); - } else { - if(type_variant == ASN_OSUBV_BIT - && !ctx->context && ctx->left) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, ctx->left); - ADVANCE(ctx->left); - ctx->left = 0; - - NEXT_PHASE(ctx); - } - break; - } - - if(sel) { - ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", - (void *)sel->prev, sel->want_nulls, - (long)sel->left, (long)sel->got, (long)size); - if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { - RETURN(RC_WMORE); - } - } - - /* - * BIT STRING-specific processing. - */ - if(type_variant == ASN_OSUBV_BIT) { - if(st->size) { - if(st->bits_unused < 0 || st->bits_unused > 7) { - RETURN(RC_FAIL); - } - /* Finalize BIT STRING: zero out unused bits. */ - st->buf[st->size-1] &= 0xff << st->bits_unused; - } else { - if(st->bits_unused) { - RETURN(RC_FAIL); - } - } - } - - ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", - (long)consumed_myself, td->name, - (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", - (long)st->size); - - - RETURN(RC_OK); -} - -/* - * Encode OCTET STRING type using DER. - */ -asn_enc_rval_t -OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 0, 0, 0 }; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - int fix_last_byte = 0; - - ASN_DEBUG("%s %s as OCTET STRING", - cb?"Estimating":"Encoding", td->name); - - /* - * Write tags. - */ - if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { - er.encoded = der_write_tags(td, - (type_variant == ASN_OSUBV_BIT) + st->size, - tag_mode, type_variant == ASN_OSUBV_ANY, tag, - cb, app_key); - if(er.encoded == -1) { - er.failed_type = td; - er.structure_ptr = sptr; - return er; - } - } else { - /* Disallow: [] IMPLICIT ANY */ - assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); - er.encoded = 0; - } - - if(!cb) { - er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; - ASN__ENCODED_OK(er); - } - - /* - * Prepare to deal with the last octet of BIT STRING. - */ - if(type_variant == ASN_OSUBV_BIT) { - uint8_t b = st->bits_unused & 0x07; - if(b && st->size) fix_last_byte = 1; - ASN__CALLBACK(&b, 1); - } - - /* Invoke callback for the main part of the buffer */ - ASN__CALLBACK(st->buf, st->size - fix_last_byte); - - /* The last octet should be stripped off the unused bits */ - if(fix_last_byte) { - uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); - ASN__CALLBACK(&b, 1); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_enc_rval_t -OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - if(flags & XER_F_CANONICAL) { - char *scend = scratch + (sizeof(scratch) - 2); - for(; buf < end; buf++) { - if(p >= scend) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - } - - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - } else { - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - ASN__CALLBACK(scratch, p-scratch); - p = scratch; - ASN__TEXT_INDENT(1, ilevel); - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - if(p - scratch) { - p--; /* Remove the tail space */ - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - if(st->size > 16) - ASN__TEXT_INDENT(1, ilevel-1); - } - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -static const struct OCTET_STRING__xer_escape_table_s { - const char *string; - int size; -} OCTET_STRING__xer_escape_table[] = { -#define OSXET(s) { s, sizeof(s) - 1 } - OSXET("\074\156\165\154\057\076"), /* */ - OSXET("\074\163\157\150\057\076"), /* */ - OSXET("\074\163\164\170\057\076"), /* */ - OSXET("\074\145\164\170\057\076"), /* */ - OSXET("\074\145\157\164\057\076"), /* */ - OSXET("\074\145\156\161\057\076"), /* */ - OSXET("\074\141\143\153\057\076"), /* */ - OSXET("\074\142\145\154\057\076"), /* */ - OSXET("\074\142\163\057\076"), /* */ - OSXET("\011"), /* \t */ - OSXET("\012"), /* \n */ - OSXET("\074\166\164\057\076"), /* */ - OSXET("\074\146\146\057\076"), /* */ - OSXET("\015"), /* \r */ - OSXET("\074\163\157\057\076"), /* */ - OSXET("\074\163\151\057\076"), /* */ - OSXET("\074\144\154\145\057\076"), /* */ - OSXET("\074\144\143\061\057\076"), /* */ - OSXET("\074\144\143\062\057\076"), /* */ - OSXET("\074\144\143\063\057\076"), /* */ - OSXET("\074\144\143\064\057\076"), /* */ - OSXET("\074\156\141\153\057\076"), /* */ - OSXET("\074\163\171\156\057\076"), /* */ - OSXET("\074\145\164\142\057\076"), /* */ - OSXET("\074\143\141\156\057\076"), /* */ - OSXET("\074\145\155\057\076"), /* */ - OSXET("\074\163\165\142\057\076"), /* */ - OSXET("\074\145\163\143\057\076"), /* */ - OSXET("\074\151\163\064\057\076"), /* */ - OSXET("\074\151\163\063\057\076"), /* */ - OSXET("\074\151\163\062\057\076"), /* */ - OSXET("\074\151\163\061\057\076"), /* */ - { 0, 0 }, /* " " */ - { 0, 0 }, /* ! */ - { 0, 0 }, /* \" */ - { 0, 0 }, /* # */ - { 0, 0 }, /* $ */ - { 0, 0 }, /* % */ - OSXET("\046\141\155\160\073"), /* & */ - { 0, 0 }, /* ' */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ - {0,0},{0,0},{0,0},{0,0}, /* 89:; */ - OSXET("\046\154\164\073"), /* < */ - { 0, 0 }, /* = */ - OSXET("\046\147\164\073"), /* > */ -}; - -static int -OS__check_escaped_control_char(const void *buf, int size) { - size_t i; - /* - * Inefficient algorithm which translates the escape sequences - * defined above into characters. Returns -1 if not found. - * TODO: replace by a faster algorithm (bsearch(), hash or - * nested table lookups). - */ - for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { - const struct OCTET_STRING__xer_escape_table_s *el; - el = &OCTET_STRING__xer_escape_table[i]; - if(el->size == size && memcmp(buf, el->string, size) == 0) - return i; - } - return -1; -} - -static int -OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { - /* - * This might be one of the escape sequences - * for control characters. Check it out. - * #11.15.5 - */ - int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); - if(control_char >= 0) { - OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; - void *p = REALLOC(st->buf, st->size + 2); - if(p) { - st->buf = (uint8_t *)p; - st->buf[st->size++] = control_char; - st->buf[st->size] = '\0'; /* nul-termination */ - return 0; - } - } - - return -1; /* No, it's not */ -} - -asn_enc_rval_t -OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - uint8_t *buf, *end; - uint8_t *ss; /* Sequence start */ - ssize_t encoded_len = 0; - - (void)ilevel; /* Unused argument */ - (void)flags; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - buf = st->buf; - end = buf + st->size; - for(ss = buf; buf < end; buf++) { - unsigned int ch = *buf; - int s_len; /* Special encoding sequence length */ - - /* - * Escape certain characters: X.680/11.15 - */ - if(ch < sizeof(OCTET_STRING__xer_escape_table) - /sizeof(OCTET_STRING__xer_escape_table[0]) - && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { - if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) - || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, - app_key) < 0) - ASN__ENCODE_FAILED; - encoded_len += (buf - ss) + s_len; - ss = buf + 1; - } - } - - encoded_len += (buf - ss); - if((buf - ss) && cb(ss, buf - ss, app_key) < 0) - ASN__ENCODE_FAILED; - - er.encoded = encoded_len; - ASN__ENCODED_OK(er); -} - -/* - * Convert from hexadecimal format (cstring): "AB CD EF" - */ -static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *chunk_stop = (const char *)chunk_buf; - const char *p = chunk_stop; - const char *pend = p + chunk_size; - unsigned int clv = 0; - int half = 0; /* Half bit */ - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 1) / 2; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * If something like " a b c " appears here, the " a b":3 will be - * converted, and the rest skipped. That is, unless buf_size is greater - * than chunk_size, then it'll be equivalent to "ABC0". - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - continue; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - clv = (clv << 4) + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - clv = (clv << 4) + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - clv = (clv << 4) + (ch - 0x61 + 10); - break; - default: - *buf = 0; /* JIC */ - return -1; - } - if(half++) { - half = 0; - *buf++ = clv; - chunk_stop = p + 1; - } - } - - /* - * Check partial decoding. - */ - if(half) { - if(have_more) { - /* - * Partial specification is fine, - * because no more more PXER_TEXT data is available. - */ - *buf++ = clv << 4; - chunk_stop = p; - } - } else { - chunk_stop = p; - } - - st->size = buf - st->buf; /* Adjust the buffer size */ - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return (chunk_stop - (const char *)chunk_buf); /* Converted size */ -} - -/* - * Convert from binary format: "00101011101" - */ -static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - int bits_unused = st->bits_unused & 0x7; - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 7) / 8; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - (void)have_more; - - if(bits_unused == 0) - bits_unused = 8; - else if(st->size) - buf--; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - break; - case 0x30: - case 0x31: - if(bits_unused-- <= 0) { - *++buf = 0; /* Clean the cell */ - bits_unused = 7; - } - *buf |= (ch&1) << bits_unused; - break; - default: - st->bits_unused = bits_unused; - return -1; - } - } - - if(bits_unused == 8) { - st->size = buf - st->buf; - st->bits_unused = 0; - } else { - st->size = buf - st->buf + 1; - st->bits_unused = bits_unused; - } - - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Something like strtod(), but with stricter rules. - */ -static int -OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { - const int32_t last_unicode_codepoint = 0x10ffff; - int32_t val = 0; - const char *p; - - for(p = buf; p < end; p++) { - int ch = *p; - - switch(ch) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - val = val * base + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - val = val * base + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - val = val * base + (ch - 0x61 + 10); - break; - case 0x3b: /* ';' */ - *ret_value = val; - return (p - buf) + 1; - default: - return -1; /* Character set error */ - } - - /* Value exceeds the Unicode range. */ - if(val > last_unicode_codepoint) { - return -1; - } - } - - *ret_value = -1; - return (p - buf); -} - -/* - * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" - */ -static ssize_t -OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, - size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - uint8_t *buf; - - /* Reallocate buffer */ - size_t new_size = st->size + chunk_size; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - int len; /* Length of the rest of the chunk */ - - if(ch != 0x26 /* '&' */) { - *buf++ = ch; - continue; /* That was easy... */ - } - - /* - * Process entity reference. - */ - len = chunk_size - (p - (const char *)chunk_buf); - if(len == 1 /* "&" */) goto want_more; - if(p[1] == 0x23 /* '#' */) { - const char *pval; /* Pointer to start of digits */ - int32_t val = 0; /* Entity reference value */ - int base; - - if(len == 2 /* "&#" */) goto want_more; - if(p[2] == 0x78 /* 'x' */) - pval = p + 3, base = 16; - else - pval = p + 2, base = 10; - len = OS__strtoent(base, pval, p + len, &val); - if(len == -1) { - /* Invalid charset. Just copy verbatim. */ - *buf++ = ch; - continue; - } - if(!len || pval[len-1] != 0x3b) goto want_more; - assert(val > 0); - p += (pval - p) + len - 1; /* Advance past entref */ - - if(val < 0x80) { - *buf++ = (char)val; - } else if(val < 0x800) { - *buf++ = 0xc0 | ((val >> 6)); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x10000) { - *buf++ = 0xe0 | ((val >> 12)); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x200000) { - *buf++ = 0xf0 | ((val >> 18)); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x4000000) { - *buf++ = 0xf8 | ((val >> 24)); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else { - *buf++ = 0xfc | ((val >> 30) & 0x1); - *buf++ = 0x80 | ((val >> 24) & 0x3f); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } - } else { - /* - * Ugly, limited parsing of & > < - */ - char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); - if(!sc) goto want_more; - if((sc - p) == 4 - && p[1] == 0x61 /* 'a' */ - && p[2] == 0x6d /* 'm' */ - && p[3] == 0x70 /* 'p' */) { - *buf++ = 0x26; - p = sc; - continue; - } - if((sc - p) == 3) { - if(p[1] == 0x6c) { - *buf = 0x3c; /* '<' */ - } else if(p[1] == 0x67) { - *buf = 0x3e; /* '>' */ - } else { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - if(p[2] != 0x74) { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - buf++; - p = sc; - continue; - } - /* Unsupported entity reference */ - *buf++ = ch; - } - - continue; - want_more: - if(have_more) { - /* - * We know that no more data (of the same type) - * is coming. Copy the rest verbatim. - */ - *buf++ = ch; - continue; - } - chunk_size = (p - (const char *)chunk_buf); - /* Processing stalled: need more data */ - break; - } - - st->size = buf - st->buf; - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Decode OCTET STRING from the XML element's body. - */ -static asn_dec_rval_t -OCTET_STRING__decode_xer( - const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size, int have_more)) { - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t *ctx; /* Per-structure parser context */ - asn_dec_rval_t rval; /* Return value from the decoder */ - int st_allocated; - - /* - * Create the string if does not exist. - */ - if(!st) { - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - *sptr = (void *)st; - if(!st) goto sta_failed; - st_allocated = 1; - } else { - st_allocated = 0; - } - if(!st->buf) { - /* This is separate from above section */ - st->buf = (uint8_t *)CALLOC(1, 1); - if(!st->buf) { - if(st_allocated) { - *sptr = 0; - goto stb_failed; - } else { - goto sta_failed; - } - } - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); - - return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, - buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); - -stb_failed: - FREEMEM(st); -sta_failed: - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; -} - -/* - * Decode OCTET STRING from the hexadecimal data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); -} - -/* - * Decode OCTET STRING from the binary (0/1) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_binary); -} - -/* - * Decode OCTET STRING from the string (ASCII/UTF-8) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, - OCTET_STRING__handle_control_chars, - OCTET_STRING__convert_entrefs); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -static int -OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", - (int)units, lb, ub, unit_bits); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Decode without translation */ - lb = 0; - } else if(pc && pc->code2value) { - if(unit_bits > 16) - return 1; /* FATAL: can't have constrained - * UniversalString with more than - * 16 million code points */ - for(; buf < end; buf += bpc) { - int value; - int code = per_get_few_bits(po, unit_bits); - if(code < 0) return -1; /* WMORE */ - value = pc->code2value(code); - if(value < 0) { - ASN_DEBUG("Code %d (0x%02x) is" - " not in map (%ld..%ld)", - code, code, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = value; break; - case 2: buf[0] = value >> 8; buf[1] = value; break; - case 4: buf[0] = value >> 24; buf[1] = value >> 16; - buf[2] = value >> 8; buf[3] = value; break; - } - } - return 0; - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_get_many_bits(po, buf, 0, unit_bits * units); - } - - for(; buf < end; buf += bpc) { - int32_t code = per_get_few_bits(po, unit_bits); - int32_t ch = code + lb; - if(code < 0) return -1; /* WMORE */ - if(ch > ub) { - ASN_DEBUG("Code %d is out of range (%ld..%ld)", - ch, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = ch; break; - case 2: buf[0] = ch >> 8; buf[1] = ch; break; - case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; - buf[2] = ch >> 8; buf[3] = ch; break; - } - } - - return 0; -} - -static int -OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - const uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", - (int)units, lb, ub, unit_bits, bpc); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Encode as is */ - lb = 0; - } else if(pc && pc->value2code) { - for(; buf < end; buf += bpc) { - int code; - uint32_t value; - switch(bpc) { - case 1: value = *(const uint8_t *)buf; break; - case 2: value = (buf[0] << 8) | buf[1]; break; - case 4: value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; break; - default: return -1; - } - code = pc->value2code(value); - if(code < 0) { - ASN_DEBUG("Character %d (0x%02x) is" - " not in map (%ld..%ld)", - *buf, *buf, lb, ub); - return -1; - } - if(per_put_few_bits(po, code, unit_bits)) - return -1; - } - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_put_many_bits(po, buf, unit_bits * units); - } - - for(ub -= lb; buf < end; buf += bpc) { - int ch; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - ch = value - lb; - if(ch < 0 || ch > ub) { - ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, - value, lb, ub + lb); - return -1; - } - if(per_put_few_bits(po, ch, unit_bits)) return -1; - } - - return 0; -} - -static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { - { APC_CONSTRAINED, 8, 8, 0, 255 }, - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, - 0, 0 -}; - -asn_dec_rval_t -OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if(bpc) { - ASN_DEBUG("Encoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Encoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len * bpc; - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, - bpc, unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - size_t size_in_units; - const uint8_t *buf; - int ret; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN__ENCODE_FAILED; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - size_in_units = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - size_in_units = st->size >> 1; - if(st->size & 1) { - ASN_DEBUG("%s string size is not modulo 2", td->name); - ASN__ENCODE_FAILED; - } - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - size_in_units = st->size >> 2; - if(st->size & 3) { - ASN_DEBUG("%s string size is not modulo 4", td->name); - ASN__ENCODE_FAILED; - } - break; - } - - ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_units, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_units < csiz->lower_bound - || (ssize_t)size_in_units > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, - size_in_units - csiz->lower_bound, csiz->effective_bits); - ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, - unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, - need_eom ? ",+EOM" : ""); - - ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, - cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save * bpc; - size_in_units -= may_save; - assert(!(may_save & 0x07) || !size_in_units); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_units); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: -/* case ASN_OSUBV_ANY: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); -*/ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; -*/ - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - cval = &asn_DEF_OCTET_STRING_constraints.value; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - if(bpc) { - ASN_DEBUG("Decoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Decoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - if(bpc == 0) { - int ubs = (csiz->upper_bound & 0x7); - st->bits_unused = ubs ? 8 - ubs : 0; - } - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - if (csiz->upper_bound - csiz->lower_bound == 0) - /* Indefinite length case */ - raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); - else - raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); - repeat = 0; - if(raw_len < 0) RETURN(RC_WMORE); - raw_len += csiz->lower_bound; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - - if (raw_len > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - - if(bpc) { - len_bytes = raw_len * bpc; - len_bits = len_bytes * unit_bits; - } else { - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) - st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - } - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - if(bpc) { - ret = OCTET_STRING_per_get_characters(pd, - &st->buf[st->size], raw_len, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ret = per_get_many_bits(pd, &st->buf[st->size], - 0, len_bits); - } - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - unsigned int sizeinunits; - const uint8_t *buf; - int ret; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - /* case ASN_OSUBV_ANY: - ASN__ENCODE_FAILED; - */ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - sizeinunits = st->size * 8 - (st->bits_unused & 0x07); - ASN_DEBUG("BIT STRING of %d bytes", - sizeinunits); - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = 8; -*/ - bpc = OS__BPC_CHAR; - sizeinunits = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - sizeinunits = st->size / 2; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - sizeinunits = st->size / 4; - break; - } - - ASN_DEBUG("Encoding %s into %d units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, sizeinunits, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out wheter size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((int)sizeinunits < csiz->lower_bound - || (int)sizeinunits > csiz->upper_bound) { - if(ct_extensible) { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else - ASN__ENCODE_FAILED; - } - } else { - inext = 0; - } - - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits >= 0) { - ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", - st->size, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - if (csiz->effective_bits > 0) { - ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); - if(ret) ASN__ENCODE_FAILED; - } - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - } - if(bpc) { - ret = OCTET_STRING_per_put_characters(po, st->buf, - sizeinunits, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - } else { - ret = per_put_many_bits(po, st->buf, - sizeinunits * unit_bits); - } - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %lu bytes", st->size); - - if(sizeinunits == 0) { - if(aper_put_length(po, -1, 0)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - buf = st->buf; - while(sizeinunits) { - ssize_t maySave = aper_put_length(po, -1, sizeinunits); - - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %ld of %ld", - (long)maySave, (long)sizeinunits); - - if(bpc) { - ret = OCTET_STRING_per_put_characters(po, buf, - maySave, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - } else { - ret = per_put_many_bits(po, buf, maySave * unit_bits); - } - if(ret) ASN__ENCODE_FAILED; - - if(bpc) - buf += maySave * bpc; - else - buf += maySave >> 3; - sizeinunits -= maySave; - assert(!(maySave & 0x07) || !sizeinunits); - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - (void)td; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - _i_INDENT(1); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Remove the tail space */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - return 0; -} - -int -OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, - void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st && (st->buf || !st->size)) { - return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const asn_OCTET_STRING_specifics_t *specs; - asn_struct_ctx_t *ctx; - struct _stack *stck; - - if(!td || !st) - return; - - specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - ASN_DEBUG("Freeing %s as OCTET STRING", td->name); - - if(st->buf) { - FREEMEM(st->buf); - st->buf = 0; - } - - /* - * Remove decode-time stack. - */ - stck = (struct _stack *)ctx->ptr; - if(stck) { - while(stck->tail) { - struct _stack_el *sel = stck->tail; - stck->tail = sel->prev; - FREEMEM(sel); - } - FREEMEM(stck); - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, - td->specifics - ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) - ->struct_size - : sizeof(OCTET_STRING_t)); - break; - } -} - -/* - * Conversion routines. - */ -int -OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { - void *buf; - - if(st == 0 || (str == 0 && len)) { - errno = EINVAL; - return -1; - } - - /* - * Clear the OCTET STRING. - */ - if(str == NULL) { - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - return 0; - } - - /* Determine the original string size, if not explicitly given */ - if(len < 0) - len = strlen(str); - - /* Allocate and fill the memory */ - buf = MALLOC(len + 1); - if(buf == NULL) - return -1; - - memcpy(buf, str, len); - ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ - FREEMEM(st->buf); - st->buf = (uint8_t *)buf; - st->size = len; - - return 0; -} - -OCTET_STRING_t * -OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, - int len) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - OCTET_STRING_t *st; - - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - if(st && str && OCTET_STRING_fromBuf(st, str, len)) { - FREEMEM(st); - st = NULL; - } - - return st; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - const OCTET_STRING_t *a = aptr; - const OCTET_STRING_t *b = bptr; - - assert(!specs || specs->subvariant != ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - return 0; - } - } else { - return ret < 0 ? -1 : 1; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -/* - * Biased function for randomizing character values around their limits. - */ -static uint32_t -OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { - assert(lb <= ub); - switch(asn_random_between(0, 16)) { - case 0: - if(lb < ub) return lb + 1; - /* Fall through */ - case 1: - return lb; - case 2: - if(lb < ub) return ub - 1; - /* Fall through */ - case 3: - return ub; - default: - return asn_random_between(lb, ub); - } -} - - -size_t -OCTET_STRING_random_length_constrained( - const asn_TYPE_descriptor_t *td, - const asn_encoding_constraints_t *constraints, size_t max_length) { - const unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - size_t rnd_len; - - /* Figure out how far we should go */ - rnd_len = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length <= (size_t)pc->lower_bound) { - return pc->lower_bound; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_len = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_len = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_len from the table */ - if(rnd_len <= max_length) { - break; - } - /* Fall through */ - default: - rnd_len = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_len = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_len = asn_random_between(0, max_length); - } - } else if(rnd_len > max_length) { - rnd_len = asn_random_between(0, max_length); - } - - return rnd_len; -} - -asn_random_fill_result_t -OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - unsigned int unit_bytes = 1; - unsigned long clb = 0; /* Lower bound on char */ - unsigned long cub = 255; /* Higher bound on char value */ - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_len; - OCTET_STRING_t *st; - - if(max_length == 0 && !*sptr) return result_skipped; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - /* Handled by BIT_STRING itself. */ - return result_failed; - case ASN_OSUBV_STR: - unit_bytes = 1; - clb = 0; - cub = 255; - break; - case ASN_OSUBV_U16: - unit_bytes = 2; - clb = 0; - cub = 65535; - break; - case ASN_OSUBV_U32: - unit_bytes = 4; - clb = 0; - cub = 0x10FFFF; - break; - } - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->value; - if(pc->flags & APC_SEMI_CONSTRAINED) { - clb = pc->lower_bound; - } else if(pc->flags & APC_CONSTRAINED) { - clb = pc->lower_bound; - cub = pc->upper_bound; - } - } - - rnd_len = - OCTET_STRING_random_length_constrained(td, constraints, max_length); - - buf = CALLOC(unit_bytes, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[unit_bytes * rnd_len]; - - switch(unit_bytes) { - case 1: - for(b = buf; b < bend; b += unit_bytes) { - *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); - } - *(uint8_t *)b = 0; - break; - case 2: - for(b = buf; b < bend; b += unit_bytes) { - uint32_t code = OCTET_STRING__random_char(clb, cub); - b[0] = code >> 8; - b[1] = code; - } - *(uint16_t *)b = 0; - break; - case 4: - for(b = buf; b < bend; b += unit_bytes) { - uint32_t code = OCTET_STRING__random_char(clb, cub); - b[0] = code >> 24; - b[1] = code >> 16; - b[2] = code >> 8; - b[3] = code; - } - *(uint32_t *)b = 0; - break; - } - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = unit_bytes * rnd_len; - - result_ok.length = st->size; - return result_ok; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/OCTET_STRING.h b/3rdparty/E2SM-gNB-X2-V4.0.1/OCTET_STRING.h deleted file mode 100644 index c2f8bae..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/OCTET_STRING.h +++ /dev/null @@ -1,102 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _OCTET_STRING_H_ -#define _OCTET_STRING_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct OCTET_STRING { - uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ - size_t size; /* Size of the buffer */ - - asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ -} OCTET_STRING_t; - -extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; -extern asn_TYPE_operation_t asn_OP_OCTET_STRING; - -asn_struct_free_f OCTET_STRING_free; -asn_struct_print_f OCTET_STRING_print; -asn_struct_print_f OCTET_STRING_print_utf8; -asn_struct_compare_f OCTET_STRING_compare; -ber_type_decoder_f OCTET_STRING_decode_ber; -der_type_encoder_f OCTET_STRING_encode_der; -xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ -xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ -xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ -xer_type_encoder_f OCTET_STRING_encode_xer; -xer_type_encoder_f OCTET_STRING_encode_xer_utf8; -oer_type_decoder_f OCTET_STRING_decode_oer; -oer_type_encoder_f OCTET_STRING_encode_oer; -per_type_decoder_f OCTET_STRING_decode_uper; -per_type_encoder_f OCTET_STRING_encode_uper; -per_type_decoder_f OCTET_STRING_decode_aper; -per_type_encoder_f OCTET_STRING_encode_aper; -asn_random_fill_f OCTET_STRING_random_fill; - -#define OCTET_STRING_constraint asn_generic_no_constraint -#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex - -/****************************** - * Handy conversion routines. * - ******************************/ - -/* - * This function clears the previous value of the OCTET STRING (if any) - * and then allocates a new memory with the specified content (str/size). - * If size = -1, the size of the original string will be determined - * using strlen(str). - * If str equals to NULL, the function will silently clear the - * current contents of the OCTET STRING. - * Returns 0 if it was possible to perform operation, -1 otherwise. - */ -int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); - -/* Handy conversion from the C string into the OCTET STRING. */ -#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) - -/* - * Allocate and fill the new OCTET STRING and return a pointer to the newly - * allocated object. NULL is permitted in str: the function will just allocate - * empty OCTET STRING. - */ -OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, - const char *str, int size); - -/**************************** - * Internally useful stuff. * - ****************************/ - -typedef struct asn_OCTET_STRING_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the structure */ - unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - enum asn_OS_Subvariant { - ASN_OSUBV_ANY, /* The open type (ANY) */ - ASN_OSUBV_BIT, /* BIT STRING */ - ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ - ASN_OSUBV_U16, /* 16-bit character (BMPString) */ - ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ - } subvariant; -} asn_OCTET_STRING_specifics_t; - -extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; - -size_t OCTET_STRING_random_length_constrained( - const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, - size_t max_length); - -#ifdef __cplusplus -} -#endif - -#endif /* _OCTET_STRING_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/OPEN_TYPE.c b/3rdparty/E2SM-gNB-X2-V4.0.1/OPEN_TYPE.c deleted file mode 100644 index a54e99c..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/OPEN_TYPE.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include -#include - -asn_TYPE_operation_t asn_OP_OPEN_TYPE = { - OPEN_TYPE_free, - OPEN_TYPE_print, - OPEN_TYPE_compare, - OPEN_TYPE_decode_ber, - OPEN_TYPE_encode_der, - OPEN_TYPE_decode_xer, - OPEN_TYPE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, 0, /* No OER support, use "-gen-OER" to enable */ -#else - OPEN_TYPE_decode_oer, - OPEN_TYPE_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - OPEN_TYPE_decode_uper, - OPEN_TYPE_encode_uper, - OPEN_TYPE_decode_aper, - OPEN_TYPE_encode_aper, -#endif - 0, /* Random fill is not supported for open type */ - 0 /* Use generic outmost tag fetcher */ -}; - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -asn_dec_rval_t -OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ASN_DEBUG("presence %d\n", selected.presence_index); - - rv = selected.type_descriptor->op->ber_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, - elm->tag_mode); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = consumed_myself; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case RC_FAIL: - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - break; - } - - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; -} - -asn_dec_rval_t -OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - int xer_context = 0; - ssize_t ch_size; - pxer_chunk_type_e ch_type; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - /* - * Confirm wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_OPENING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = selected.type_descriptor->op->xer_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_FAIL: - /* Point to a best position where failure occurred */ - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - /* Wrt. rv.consumed==0: - * In case a genuine RC_WMORE, the whole Open Type decoding - * will have to be restarted. - */ - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; - } - - /* - * Finalize wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_CLOSING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - rv.consumed += consumed_myself; - - return rv; -} - - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/OPEN_TYPE.h b/3rdparty/E2SM-gNB-X2-V4.0.1/OPEN_TYPE.h deleted file mode 100644 index b0d023c..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/OPEN_TYPE.h +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_OPEN_TYPE_H -#define ASN_OPEN_TYPE_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define OPEN_TYPE_free CHOICE_free -#define OPEN_TYPE_print CHOICE_print -#define OPEN_TYPE_compare CHOICE_compare -#define OPEN_TYPE_constraint CHOICE_constraint -#define OPEN_TYPE_decode_ber NULL -#define OPEN_TYPE_encode_der CHOICE_encode_der -#define OPEN_TYPE_decode_xer NULL -#define OPEN_TYPE_encode_xer CHOICE_encode_xer -#define OPEN_TYPE_decode_oer NULL -#define OPEN_TYPE_encode_oer CHOICE_encode_oer -#define OPEN_TYPE_decode_uper NULL -#define OPEN_TYPE_decode_aper NULL - -extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; - -/* - * Decode an Open Type which is potentially constraiend - * by the other members of the parent structure. - */ -asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - const void *ptr, size_t size); - -asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - const void *ptr, size_t size); - -asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - asn_TYPE_member_t *element, const void *ptr, - size_t size); - -asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - asn_per_data_t *pd); - -asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *parent_type, - void *parent_structure, - const asn_TYPE_member_t *element, - asn_per_data_t *pd); - -asn_enc_rval_t OPEN_TYPE_encode_uper( - const asn_TYPE_descriptor_t *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -asn_enc_rval_t OPEN_TYPE_encode_aper( - const asn_TYPE_descriptor_t *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_OPEN_TYPE_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/PrintableString.c b/3rdparty/E2SM-gNB-X2-V4.0.1/PrintableString.c deleted file mode 100644 index 8fc3939..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/PrintableString.c +++ /dev/null @@ -1,130 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * ASN.1:1984 (X.409) - */ -static const int _PrintableString_alphabet[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int _PrintableString_code2value[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122}; - -/* - * PrintableString basic type description. - */ -static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ -}; -static int asn_DEF_PrintableString_v2c(unsigned int value) { - return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; -} -static int asn_DEF_PrintableString_c2v(unsigned int code) { - if(code < 74) - return _PrintableString_code2value[code]; - return -1; -} -static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { - { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ - asn_DEF_PrintableString_v2c, - asn_DEF_PrintableString_c2v -}; -asn_TYPE_operation_t asn_OP_PrintableString = { - OCTET_STRING_free, - OCTET_STRING_print_utf8, /* ASCII subset */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_utf8, - OCTET_STRING_encode_xer_utf8, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, - OCTET_STRING_encode_uper, - OCTET_STRING_decode_aper, - OCTET_STRING_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_PrintableString = { - "PrintableString", - "PrintableString", - &asn_OP_PrintableString, - asn_DEF_PrintableString_tags, - sizeof(asn_DEF_PrintableString_tags) - / sizeof(asn_DEF_PrintableString_tags[0]) - 1, - asn_DEF_PrintableString_tags, - sizeof(asn_DEF_PrintableString_tags) - / sizeof(asn_DEF_PrintableString_tags[0]), - { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - - -int -PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, - void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - - if(st && st->buf) { - uint8_t *buf = st->buf; - uint8_t *end = buf + st->size; - - /* - * Check the alphabet of the PrintableString. - * ASN.1:1984 (X.409) - */ - for(; buf < end; buf++) { - if(!_PrintableString_alphabet[*buf]) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value byte %ld (%d) " - "not in PrintableString alphabet " - "(%s:%d)", - td->name, - (long)((buf - st->buf) + 1), - *buf, - __FILE__, __LINE__); - return -1; - } - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/PrintableString.h b/3rdparty/E2SM-gNB-X2-V4.0.1/PrintableString.h deleted file mode 100644 index 8c2b61a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/PrintableString.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PrintableString_H_ -#define _PrintableString_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ - -extern asn_TYPE_descriptor_t asn_DEF_PrintableString; -extern asn_TYPE_operation_t asn_OP_PrintableString; - -asn_constr_check_f PrintableString_constraint; - -#define PrintableString_free OCTET_STRING_free -#define PrintableString_print OCTET_STRING_print_utf8 -#define PrintableString_compare OCTET_STRING_compare -#define PrintableString_decode_ber OCTET_STRING_decode_ber -#define PrintableString_encode_der OCTET_STRING_encode_der -#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 -#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 -#define PrintableString_decode_uper OCTET_STRING_decode_uper -#define PrintableString_encode_uper OCTET_STRING_encode_uper -#define PrintableString_decode_aper OCTET_STRING_decode_aper -#define PrintableString_encode_aper OCTET_STRING_encode_aper - -#ifdef __cplusplus -} -#endif - -#endif /* _PrintableString_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SEQUENCE_OF.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SEQUENCE_OF.c deleted file mode 100644 index ec952fc..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SEQUENCE_OF.c +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -typedef A_SEQUENCE_OF(void) asn_sequence; - -void -asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { - asn_sequence *as = (asn_sequence *)asn_sequence_of_x; - - if(as) { - void *ptr; - int n; - - if(number < 0 || number >= as->count) - return; /* Nothing to delete */ - - if(_do_free && as->free) { - ptr = as->array[number]; - } else { - ptr = 0; - } - - /* - * Shift all elements to the left to hide the gap. - */ - --as->count; - for(n = number; n < as->count; n++) - as->array[n] = as->array[n+1]; - - /* - * Invoke the third-party function only when the state - * of the parent structure is consistent. - */ - if(ptr) as->free(ptr); - } -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SEQUENCE_OF.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SEQUENCE_OF.h deleted file mode 100644 index e35bc44..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SEQUENCE_OF.h +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_SEQUENCE_OF_H -#define ASN_SEQUENCE_OF_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * SEQUENCE OF is the same as SET OF with a tiny difference: - * the delete operation preserves the initial order of elements - * and thus MAY operate in non-constant time. - */ -#define A_SEQUENCE_OF(type) A_SET_OF(type) - -#define ASN_SEQUENCE_ADD(headptr, ptr) \ - asn_sequence_add((headptr), (ptr)) - -/*********************************************** - * Implementation of the SEQUENCE OF structure. - */ - -#define asn_sequence_add asn_set_add -#define asn_sequence_empty asn_set_empty - -/* - * Delete the element from the set by its number (base 0). - * This is NOT a constant-time operation. - * The order of elements is preserved. - * If _do_free is given AND the (*free) is initialized, the element - * will be freed using the custom (*free) function as well. - */ -void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); - -/* - * Cope with different conversions requirements to/from void in C and C++. - * This is mostly useful for support library. - */ -typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; -#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) -#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_SEQUENCE_OF_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SET_OF.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SET_OF.c deleted file mode 100644 index 944f2cb..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SET_OF.c +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Add another element into the set. - */ -int -asn_set_add(void *asn_set_of_x, void *ptr) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as == 0 || ptr == 0) { - errno = EINVAL; /* Invalid arguments */ - return -1; - } - - /* - * Make sure there's enough space to insert an element. - */ - if(as->count == as->size) { - int _newsize = as->size ? (as->size << 1) : 4; - void *_new_arr; - _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); - if(_new_arr) { - as->array = (void **)_new_arr; - as->size = _newsize; - } else { - /* ENOMEM */ - return -1; - } - } - - as->array[as->count++] = ptr; - - return 0; -} - -void -asn_set_del(void *asn_set_of_x, int number, int _do_free) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as) { - void *ptr; - if(number < 0 || number >= as->count) - return; - - if(_do_free && as->free) { - ptr = as->array[number]; - } else { - ptr = 0; - } - - as->array[number] = as->array[--as->count]; - - /* - * Invoke the third-party function only when the state - * of the parent structure is consistent. - */ - if(ptr) as->free(ptr); - } -} - -/* - * Free the contents of the set, do not free the set itself. - */ -void -asn_set_empty(void *asn_set_of_x) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as) { - if(as->array) { - if(as->free) { - while(as->count--) - as->free(as->array[as->count]); - } - FREEMEM(as->array); - as->array = 0; - } - as->count = 0; - as->size = 0; - } - -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SET_OF.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SET_OF.h deleted file mode 100644 index 882e1a4..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_SET_OF.h +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_SET_OF_H -#define ASN_SET_OF_H - -#ifdef __cplusplus -#define A_SET_OF(type) \ - struct { \ - type **array; \ - int count; /* Meaningful size */ \ - int size; /* Allocated size */ \ - void (*free)(decltype(*array)); \ - } -#else /* C */ -#define A_SET_OF(type) \ - struct { \ - type **array; \ - int count; /* Meaningful size */ \ - int size; /* Allocated size */ \ - void (*free)(type *); \ - } -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define ASN_SET_ADD(headptr, ptr) \ - asn_set_add((headptr), (ptr)) - -/******************************************* - * Implementation of the SET OF structure. - */ - -/* - * Add another structure into the set by its pointer. - * RETURN VALUES: - * 0 for success and -1/errno for failure. - */ -int asn_set_add(void *asn_set_of_x, void *ptr); - -/* - * Delete the element from the set by its number (base 0). - * This is a constant-time operation. The order of elements before the - * deleted ones is guaranteed, the order of elements after the deleted - * one is NOT guaranteed. - * If _do_free is given AND the (*free) is initialized, the element - * will be freed using the custom (*free) function as well. - */ -void asn_set_del(void *asn_set_of_x, int number, int _do_free); - -/* - * Empty the contents of the set. Will free the elements, if (*free) is given. - * Will NOT free the set itself. - */ -void asn_set_empty(void *asn_set_of_x); - -/* - * Cope with different conversions requirements to/from void in C and C++. - * This is mostly useful for support library. - */ -typedef A_SET_OF(void) asn_anonymous_set_; -#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) -#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_SET_OF_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_application.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_application.c deleted file mode 100644 index 2bff460..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_application.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_app_consume_bytes_f *callback, - void *callback_key); - - -struct callback_count_bytes_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - size_t computed_size; -}; - -/* - * Encoder which just counts bytes that come through it. - */ -static int -callback_count_bytes_cb(const void *data, size_t size, void *keyp) { - struct callback_count_bytes_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret >= 0) { - key->computed_size += size; - } - - return ret; -} - -struct overrun_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct dynamic_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct callback_failure_catch_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - int callback_failed; -}; - -/* - * Encoder which doesn't stop counting bytes - * even if it reaches the end of the buffer. - */ -static int -overrun_encoder_cb(const void *data, size_t size, void *keyp) { - struct overrun_encoder_key *key = keyp; - - if(key->computed_size + size > key->buffer_size) { - /* - * Avoid accident on the next call: - * stop adding bytes to the buffer. - */ - key->buffer_size = 0; - } else { - memcpy((char *)key->buffer + key->computed_size, data, size); - } - key->computed_size += size; - - return 0; -} - -/* - * Encoder which dynamically allocates output, and continues - * to count even if allocation failed. - */ -static int -dynamic_encoder_cb(const void *data, size_t size, void *keyp) { - struct dynamic_encoder_key *key = keyp; - - if(key->buffer) { - if(key->computed_size + size >= key->buffer_size) { - void *p; - size_t new_size = key->buffer_size; - - do { - new_size *= 2; - } while(new_size <= key->computed_size + size); - - p = REALLOC(key->buffer, new_size); - if(p) { - key->buffer = p; - key->buffer_size = new_size; - } else { - FREEMEM(key->buffer); - key->buffer = 0; - key->buffer_size = 0; - key->computed_size += size; - return 0; - } - } - memcpy((char *)key->buffer + key->computed_size, data, size); - } - - key->computed_size += size; - - return 0; -} - -/* - * Encoder which help convert the application level encoder failure into EIO. - */ -static int -callback_failure_catch_cb(const void *data, size_t size, void *keyp) { - struct callback_failure_catch_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret < 0) { - key->callback_failed = 1; - } - - return ret; -} - -asn_enc_rval_t -asn_encode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { - struct callback_failure_catch_key cb_key; - asn_enc_rval_t er = {0,0,0}; - - if(!callback) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.callback_failed = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - callback_failure_catch_cb, &cb_key); - if(cb_key.callback_failed) { - assert(er.encoded == -1); - assert(errno == EBADF); - errno = EIO; - } - - return er; -} - -asn_enc_rval_t -asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - void *buffer, size_t buffer_size) { - struct overrun_encoder_key buf_key; - asn_enc_rval_t er = {0,0,0}; - - if(buffer_size > 0 && !buffer) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - buf_key.buffer = buffer; - buf_key.buffer_size = buffer_size; - buf_key.computed_size = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - overrun_encoder_cb, &buf_key); - - if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - er.encoded, buf_key.computed_size); - assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); - } - - return er; -} - -asn_encode_to_new_buffer_result_t -asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr) { - struct dynamic_encoder_key buf_key; - asn_encode_to_new_buffer_result_t res; - - buf_key.buffer_size = 16; - buf_key.buffer = MALLOC(buf_key.buffer_size); - buf_key.computed_size = 0; - - res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - dynamic_encoder_cb, &buf_key); - - if(res.result.encoded >= 0 - && (size_t)res.result.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - res.result.encoded, buf_key.computed_size); - assert(res.result.encoded < 0 - || (size_t)res.result.encoded == buf_key.computed_size); - } - - res.buffer = buf_key.buffer; - - /* 0-terminate just in case. */ - if(res.buffer) { - assert(buf_key.computed_size < buf_key.buffer_size); - ((char *)res.buffer)[buf_key.computed_size] = '\0'; - } - - return res; -} - -static asn_enc_rval_t -asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_consume_bytes_f *callback, void *callback_key) { - asn_enc_rval_t er = {0,0,0}; - enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; - - (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ - - if(!td || !sptr) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - switch(syntax) { - case ATS_NONSTANDARD_PLAINTEXT: - if(td->op->print_struct) { - struct callback_count_bytes_key cb_key; - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.computed_size = 0; - if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, - &cb_key) - < 0 - || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { - errno = EBADF; /* Structure has incorrect form. */ - er.encoded = -1; - er.failed_type = td; - er.structure_ptr = sptr; - } else { - er.encoded = cb_key.computed_size; - er.failed_type = 0; - er.structure_ptr = 0; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - case ATS_RANDOM: - errno = ENOENT; /* Randomization doesn't make sense on output. */ - ASN__ENCODE_FAILED; - - case ATS_BER: - /* BER is a superset of DER. */ - /* Fall through. */ - case ATS_DER: - if(td->op->der_encoder) { - er = der_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->der_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* DER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_CER: - errno = ENOENT; /* Transfer syntax is not defined for any type. */ - ASN__ENCODE_FAILED; - -#ifdef ASN_DISABLE_OER_SUPPORT - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_OER_SUPPORT */ - case ATS_BASIC_OER: - /* CANONICAL-OER is a superset of BASIC-OER. */ - /* Fall through. */ - case ATS_CANONICAL_OER: - if(td->op->oer_encoder) { - er = oer_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->oer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* OER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_OER_SUPPORT */ - -#ifdef ASN_DISABLE_PER_SUPPORT - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_PER_SUPPORT */ - case ATS_UNALIGNED_BASIC_PER: - /* CANONICAL-UPER is a superset of BASIC-UPER. */ - /* Fall through. */ - case ATS_UNALIGNED_CANONICAL_PER: - if(td->op->uper_encoder) { - er = uper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->uper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* UPER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_ALIGNED_BASIC_PER: - /* CANONICAL-APER is a superset of BASIC-APER. */ - /* Fall through. */ - case ATS_ALIGNED_CANONICAL_PER: - if(td->op->aper_encoder) { - er = aper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->aper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* APER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_PER_SUPPORT */ - - case ATS_BASIC_XER: - /* CANONICAL-XER is a superset of BASIC-XER. */ - xer_flags &= ~XER_F_CANONICAL; - xer_flags |= XER_F_BASIC; - /* Fall through. */ - case ATS_CANONICAL_XER: - if(td->op->xer_encoder) { - er = xer_encode(td, sptr, xer_flags, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->xer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* XER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - default: - errno = ENOENT; - ASN__ENCODE_FAILED; - } - - return er; -} - -asn_dec_rval_t -asn_decode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - void **sptr, const void *buffer, size_t size) { - if(!td || !td->op || !sptr || (size && !buffer)) { - ASN__DECODE_FAILED; - } - - switch(syntax) { - case ATS_CER: - case ATS_NONSTANDARD_PLAINTEXT: - default: - errno = ENOENT; - ASN__DECODE_FAILED; - - case ATS_RANDOM: - if(!td->op->random_fill) { - ASN__DECODE_FAILED; - } else { - if(asn_random_fill(td, sptr, 16000) == 0) { - asn_dec_rval_t ret = {RC_OK, 0}; - return ret; - } else { - ASN__DECODE_FAILED; - } - } - break; - - case ATS_DER: - case ATS_BER: - return ber_decode(opt_codec_ctx, td, sptr, buffer, size); - - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: -#ifdef ASN_DISABLE_OER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return oer_decode(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_BASIC_XER: - case ATS_CANONICAL_XER: - return xer_decode(opt_codec_ctx, td, sptr, buffer, size); - } -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_application.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_application.h deleted file mode 100644 index 034f646..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_application.h +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Application-level ASN.1 callbacks. - */ -#ifndef ASN_APPLICATION_H -#define ASN_APPLICATION_H - -#include "asn_system.h" /* for platform-dependent types */ -#include "asn_codecs.h" /* for ASN.1 codecs specifics */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A selection of ASN.1 Transfer Syntaxes to use with generalized - * encoders and decoders declared further in this .h file. - */ -enum asn_transfer_syntax { - /* Avoid appearance of a default transfer syntax. */ - ATS_INVALID = 0, - /* Plaintext output (not conforming to any standard), for debugging. */ - ATS_NONSTANDARD_PLAINTEXT, - /* Returns a randomly generated structure. */ - ATS_RANDOM, - /* - * X.690: - * BER: Basic Encoding Rules. - * DER: Distinguished Encoding Rules. - * CER: Canonical Encoding Rules. - * DER and CER are more strict variants of BER. - */ - ATS_BER, - ATS_DER, - ATS_CER, /* Only decoding is supported */ - /* - * X.696: - * OER: Octet Encoding Rules. - * CANONICAL-OER is a more strict variant of BASIC-OER. - */ - ATS_BASIC_OER, - ATS_CANONICAL_OER, - /* - * X.691: - * PER: Packed Encoding Rules. - * CANONICAL-PER is a more strict variant of BASIC-PER. - * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). - */ - ATS_UNALIGNED_BASIC_PER, - ATS_UNALIGNED_CANONICAL_PER, - ATS_ALIGNED_BASIC_PER, - ATS_ALIGNED_CANONICAL_PER, - /* - * X.693: - * XER: XML Encoding Rules. - * CANONICAL-XER is a more strict variant of BASIC-XER. - */ - ATS_BASIC_XER, - ATS_CANONICAL_XER -}; - -/* - * A generic encoder for any supported transfer syntax. - * RETURN VALUES: - * The (.encoded) field of the return value is REDEFINED to mean the following: - * >=0: The computed size of the encoded data. Can exceed the (buffer_size). - * -1: Error encoding the structure. See the error code in (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate - * values at the place of failure, if at all possible. - * WARNING: The (.encoded) field of the return value can exceed the buffer_size. - * This is similar to snprintf(3) contract which might return values - * greater than the buffer size. - */ -asn_enc_rval_t asn_encode_to_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, void *buffer, size_t buffer_size); - -/* - * A variant of asn_encode_to_buffer() with automatically allocated buffer. - * RETURN VALUES: - * On success, returns a newly allocated (.buffer) containing the whole message. - * The message size is returned in (.result.encoded). - * On failure: - * (.buffer) is NULL, - * (.result.encoded) as in asn_encode_to_buffer(), - * The errno codes as in asn_encode_to_buffer(), plus the following: - * ENOMEM: Memory allocation failed due to system or internal limits. - * The user is responsible for freeing the (.buffer). - */ -typedef struct asn_encode_to_new_buffer_result_s { - void *buffer; /* NULL if failed to encode. */ - asn_enc_rval_t result; -} asn_encode_to_new_buffer_result_t; -asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode); - - -/* - * Generic type of an application-defined callback to return various - * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. - */ -typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, - void *application_specific_key); - - -/* - * A generic encoder for any supported transfer syntax. - * Returns the comprehensive encoding result descriptor (see asn_codecs.h). - * RETURN VALUES: - * The negative (.encoded) field of the return values is accompanied with the - * following error codes (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * EIO: The (callback) has returned negative value during encoding. - */ -asn_enc_rval_t asn_encode( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, - asn_app_consume_bytes_f *callback, void *callback_key); - - -/* - * A generic decoder for any supported transfer syntax. - */ -asn_dec_rval_t asn_decode( - const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_decode, - void **structure_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - - -/* - * A callback of this type is called whenever constraint validation fails - * on some ASN.1 type. See "constraints.h" for more details on constraint - * validation. - * This callback specifies a descriptor of the ASN.1 type which failed - * the constraint check, as well as human readable message on what - * particular constraint has failed. - */ -typedef void (asn_app_constraint_failed_f)(void *application_specific_key, - const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, - const void *structure_which_failed_ptr, - const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); - - -#ifdef __cplusplus -} -#endif - -#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ - -#endif /* ASN_APPLICATION_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_bit_data.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_bit_data.c deleted file mode 100644 index fe4b89b..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_bit_data.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Create a contiguous non-refillable bit data structure. - * Can be freed by FREEMEM(). - */ -asn_bit_data_t * -asn_bit_data_new_contiguous(const void *data, size_t size_bits) { - size_t size_bytes = (size_bits + 7) / 8; - asn_bit_data_t *pd; - uint8_t *bytes; - - /* Get the extensions map */ - pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); - if(!pd) { - return NULL; - } - bytes = (void *)(((char *)pd) + sizeof(*pd)); - memcpy(bytes, data, size_bytes); - bytes[size_bytes] = 0; - pd->buffer = bytes; - pd->nboff = 0; - pd->nbits = size_bits; - - return pd; -} - - -char * -asn_bit_data_string(asn_bit_data_t *pd) { - static char buf[2][32]; - static int n; - n = (n+1) % 2; - snprintf(buf[n], sizeof(buf[n]), - "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE - "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", - pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, - pd->nbits - pd->nboff); - return buf[n]; -} - -void -asn_get_undo(asn_bit_data_t *pd, int nbits) { - if((ssize_t)pd->nboff < nbits) { - assert((ssize_t)pd->nboff < nbits); - } else { - pd->nboff -= nbits; - pd->moved -= nbits; - } -} - -/* - * Extract a small number of bits (<= 31) from the specified PER data pointer. - */ -int32_t -asn_get_few_bits(asn_bit_data_t *pd, int nbits) { - size_t off; /* Next after last bit offset */ - ssize_t nleft; /* Number of bits left in this stream */ - uint32_t accum; - const uint8_t *buf; - - if(nbits < 0) - return -1; - - nleft = pd->nbits - pd->nboff; - if(nbits > nleft) { - int32_t tailv, vhead; - if(!pd->refill || nbits > 31) return -1; - /* Accumulate unused bytes before refill */ - ASN_DEBUG("Obtain the rest %d bits (want %d)", - (int)nleft, (int)nbits); - tailv = asn_get_few_bits(pd, nleft); - if(tailv < 0) return -1; - /* Refill (replace pd contents with new data) */ - if(pd->refill(pd)) - return -1; - nbits -= nleft; - vhead = asn_get_few_bits(pd, nbits); - /* Combine the rest of previous pd with the head of new one */ - tailv = (tailv << nbits) | vhead; /* Could == -1 */ - return tailv; - } - - /* - * Normalize position indicator. - */ - if(pd->nboff >= 8) { - pd->buffer += (pd->nboff >> 3); - pd->nbits -= (pd->nboff & ~0x07); - pd->nboff &= 0x07; - } - pd->moved += nbits; - pd->nboff += nbits; - off = pd->nboff; - buf = pd->buffer; - - /* - * Extract specified number of bits. - */ - if(off <= 8) - accum = nbits ? (buf[0]) >> (8 - off) : 0; - else if(off <= 16) - accum = ((buf[0] << 8) + buf[1]) >> (16 - off); - else if(off <= 24) - accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); - else if(off <= 31) - accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) - + (buf[2] << 8) + (buf[3])) >> (32 - off); - else if(nbits <= 31) { - asn_bit_data_t tpd = *pd; - /* Here are we with our 31-bits limit plus 1..7 bits offset. */ - asn_get_undo(&tpd, nbits); - /* The number of available bits in the stream allow - * for the following operations to take place without - * invoking the ->refill() function */ - accum = asn_get_few_bits(&tpd, nbits - 24) << 24; - accum |= asn_get_few_bits(&tpd, 24); - } else { - asn_get_undo(pd, nbits); - return -1; - } - - accum &= (((uint32_t)1 << nbits) - 1); - - ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", - (int)nbits, (int)nleft, - (int)pd->moved, - (((long)pd->buffer) & 0xf), - (int)pd->nboff, (int)pd->nbits, - ((pd->buffer != NULL)?pd->buffer[0]:0), - (int)(pd->nbits - pd->nboff), - (int)accum); - - return accum; -} - -/* - * Extract a large number of bits from the specified PER data pointer. - */ -int -asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { - int32_t value; - - if(alright && (nbits & 7)) { - /* Perform right alignment of a first few bits */ - value = asn_get_few_bits(pd, nbits & 0x07); - if(value < 0) return -1; - *dst++ = value; /* value is already right-aligned */ - nbits &= ~7; - } - - while(nbits) { - if(nbits >= 24) { - value = asn_get_few_bits(pd, 24); - if(value < 0) return -1; - *(dst++) = value >> 16; - *(dst++) = value >> 8; - *(dst++) = value; - nbits -= 24; - } else { - value = asn_get_few_bits(pd, nbits); - if(value < 0) return -1; - if(nbits & 7) { /* implies left alignment */ - value <<= 8 - (nbits & 7), - nbits += 8 - (nbits & 7); - if(nbits > 24) - *dst++ = value >> 24; - } - if(nbits > 16) - *dst++ = value >> 16; - if(nbits > 8) - *dst++ = value >> 8; - *dst++ = value; - break; - } - } - - return 0; -} - -/* - * Put a small number of bits (<= 31). - */ -int -asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { - size_t off; /* Next after last bit offset */ - size_t omsk; /* Existing last byte meaningful bits mask */ - uint8_t *buf; - - if(obits <= 0 || obits >= 32) return obits ? -1 : 0; - - ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", - obits, (int)bits, (void *)po->buffer, (int)po->nboff); - - /* - * Normalize position indicator. - */ - if(po->nboff >= 8) { - po->buffer += (po->nboff >> 3); - po->nbits -= (po->nboff & ~0x07); - po->nboff &= 0x07; - } - - /* - * Flush whole-bytes output, if necessary. - */ - if(po->nboff + obits > po->nbits) { - size_t complete_bytes; - if(!po->buffer) po->buffer = po->tmpspace; - complete_bytes = (po->buffer - po->tmpspace); - ASN_DEBUG("[PER output %ld complete + %ld]", - (long)complete_bytes, (long)po->flushed_bytes); - if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) - return -1; - if(po->nboff) - po->tmpspace[0] = po->buffer[0]; - po->buffer = po->tmpspace; - po->nbits = 8 * sizeof(po->tmpspace); - po->flushed_bytes += complete_bytes; - } - - /* - * Now, due to sizeof(tmpspace), we are guaranteed large enough space. - */ - buf = po->buffer; - omsk = ~((1 << (8 - po->nboff)) - 1); - off = (po->nboff + obits); - - /* Clear data of debris before meaningful bits */ - bits &= (((uint32_t)1 << obits) - 1); - - ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, - (int)bits, (int)bits, - (int)po->nboff, (int)off, - buf[0], (int)(omsk&0xff), - (int)(buf[0] & omsk)); - - if(off <= 8) /* Completely within 1 byte */ - po->nboff = off, - bits <<= (8 - off), - buf[0] = (buf[0] & omsk) | bits; - else if(off <= 16) - po->nboff = off, - bits <<= (16 - off), - buf[0] = (buf[0] & omsk) | (bits >> 8), - buf[1] = bits; - else if(off <= 24) - po->nboff = off, - bits <<= (24 - off), - buf[0] = (buf[0] & omsk) | (bits >> 16), - buf[1] = bits >> 8, - buf[2] = bits; - else if(off <= 31) - po->nboff = off, - bits <<= (32 - off), - buf[0] = (buf[0] & omsk) | (bits >> 24), - buf[1] = bits >> 16, - buf[2] = bits >> 8, - buf[3] = bits; - else { - if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; - if(asn_put_few_bits(po, bits, obits - 24)) return -1; - } - - ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", - (int)bits, (int)bits, buf[0], - (long)(po->buffer - po->tmpspace)); - - return 0; -} - - -/* - * Output a large number of bits. - */ -int -asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { - - while(nbits) { - uint32_t value; - - if(nbits >= 24) { - value = (src[0] << 16) | (src[1] << 8) | src[2]; - src += 3; - nbits -= 24; - if(asn_put_few_bits(po, value, 24)) - return -1; - } else { - value = src[0]; - if(nbits > 8) - value = (value << 8) | src[1]; - if(nbits > 16) - value = (value << 8) | src[2]; - if(nbits & 0x07) - value >>= (8 - (nbits & 0x07)); - if(asn_put_few_bits(po, value, nbits)) - return -1; - break; - } - } - - return 0; -} - - -int -asn_put_aligned_flush(asn_bit_outp_t *po) { - uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); - size_t complete_bytes = - (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); - - if(unused_bits) { - po->buffer[po->nboff >> 3] &= ~0u << unused_bits; - } - - if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { - return -1; - } else { - po->buffer = po->tmpspace; - po->nboff = 0; - po->nbits = 8 * sizeof(po->tmpspace); - po->flushed_bytes += complete_bytes; - return 0; - } -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_bit_data.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_bit_data.h deleted file mode 100644 index 59de7af..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_bit_data.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_BIT_DATA -#define ASN_BIT_DATA - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This structure describes a position inside an incoming PER bit stream. - */ -typedef struct asn_bit_data_s { - const uint8_t *buffer; /* Pointer to the octet stream */ - size_t nboff; /* Bit offset to the meaningful bit */ - size_t nbits; /* Number of bits in the stream */ - size_t moved; /* Number of bits moved through this bit stream */ - int (*refill)(struct asn_bit_data_s *); - void *refill_key; -} asn_bit_data_t; - -/* - * Create a contiguous non-refillable bit data structure. - * Can be freed by FREEMEM(). - */ -asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); - -/* - * Extract a small number of bits (<= 31) from the specified PER data pointer. - * This function returns -1 if the specified number of bits could not be - * extracted due to EOD or other conditions. - */ -int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); - -/* Undo the immediately preceeding "get_few_bits" operation */ -void asn_get_undo(asn_bit_data_t *, int get_nbits); - -/* - * Extract a large number of bits from the specified PER data pointer. - * This function returns -1 if the specified number of bits could not be - * extracted due to EOD or other conditions. - */ -int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, - int get_nbits); - -/* Non-thread-safe debugging function, don't use it */ -char *asn_bit_data_string(asn_bit_data_t *); - -/* - * This structure supports forming bit output. - */ -typedef struct asn_bit_outp_s { - uint8_t *buffer; /* Pointer into the (tmpspace) */ - size_t nboff; /* Bit offset to the meaningful bit */ - size_t nbits; /* Number of bits left in (tmpspace) */ - uint8_t tmpspace[32]; /* Preliminary storage to hold data */ - int (*output)(const void *data, size_t size, void *op_key); - void *op_key; /* Key for (output) data callback */ - size_t flushed_bytes; /* Bytes already flushed through (output) */ -} asn_bit_outp_t; - -/* Output a small number of bits (<= 31) */ -int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); - -/* Output a large number of bits */ -int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); - -/* - * Flush whole bytes (0 or more) through (outper) member. - * The least significant bits which are not used are guaranteed to be set to 0. - * Returns -1 if callback returns -1. Otherwise, 0. - */ -int asn_put_aligned_flush(asn_bit_outp_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_BIT_DATA */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs.h deleted file mode 100644 index e75c270..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_CODECS_H -#define ASN_CODECS_H - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * This structure defines a set of parameters that may be passed - * to every ASN.1 encoder or decoder function. - * WARNING: if max_stack_size member is set, and you are calling the - * function pointers of the asn_TYPE_descriptor_t directly, - * this structure must be ALLOCATED ON THE STACK! - * If you can't always satisfy this requirement, use ber_decode(), - * xer_decode() and uper_decode() functions instead. - */ -typedef struct asn_codec_ctx_s { - /* - * Limit the decoder routines to use no (much) more stack than a given - * number of bytes. Most of decoders are stack-based, and this - * would protect against stack overflows if the number of nested - * encodings is high. - * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, - * and are safe from this kind of overflow. - * A value from getrlimit(RLIMIT_STACK) may be used to initialize - * this variable. Be careful in multithreaded environments, as the - * stack size is rather limited. - */ - size_t max_stack_size; /* 0 disables stack bounds checking */ -} asn_codec_ctx_t; - -/* - * Type of the return value of the encoding functions (der_encode, xer_encode). - */ -typedef struct asn_enc_rval_s { - /* - * Number of bytes encoded. - * -1 indicates failure to encode the structure. - * In this case, the members below this one are meaningful. - */ - ssize_t encoded; - - /* - * Members meaningful when (encoded == -1), for post mortem analysis. - */ - - /* Type which cannot be encoded */ - const struct asn_TYPE_descriptor_s *failed_type; - - /* Pointer to the structure of that type */ - const void *structure_ptr; -} asn_enc_rval_t; -#define ASN__ENCODE_FAILED do { \ - asn_enc_rval_t tmp_error; \ - tmp_error.encoded = -1; \ - tmp_error.failed_type = td; \ - tmp_error.structure_ptr = sptr; \ - ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ - return tmp_error; \ -} while(0) -#define ASN__ENCODED_OK(rval) do { \ - rval.structure_ptr = 0; \ - rval.failed_type = 0; \ - return rval; \ -} while(0) - -/* - * Type of the return value of the decoding functions (ber_decode, xer_decode) - * - * Please note that the number of consumed bytes is ALWAYS meaningful, - * even if code==RC_FAIL. This is to indicate the number of successfully - * decoded bytes, hence providing a possibility to fail with more diagnostics - * (i.e., print the offending remainder of the buffer). - */ -enum asn_dec_rval_code_e { - RC_OK, /* Decoded successfully */ - RC_WMORE, /* More data expected, call again */ - RC_FAIL /* Failure to decode data */ -}; -typedef struct asn_dec_rval_s { - enum asn_dec_rval_code_e code; /* Result code */ - size_t consumed; /* Number of bytes consumed */ -} asn_dec_rval_t; -#define ASN__DECODE_FAILED do { \ - asn_dec_rval_t tmp_error; \ - tmp_error.code = RC_FAIL; \ - tmp_error.consumed = 0; \ - ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ - return tmp_error; \ -} while(0) -#define ASN__DECODE_STARVED do { \ - asn_dec_rval_t tmp_error; \ - tmp_error.code = RC_WMORE; \ - tmp_error.consumed = 0; \ - return tmp_error; \ -} while(0) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_CODECS_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs_prim.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs_prim.c deleted file mode 100644 index fc24247..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs_prim.c +++ /dev/null @@ -1,317 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Decode an always-primitive type. - */ -asn_dec_rval_t -ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval; - ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ - - /* - * If the structure is not there, allocate it. - */ - if(st == NULL) { - st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) ASN__DECODE_FAILED; - *sptr = (void *)st; - } - - ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", - td->name, tag_mode); - - /* - * Check tags and extract value length. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - st->size = (int)length; - /* The following better be optimized away. */ - if(sizeof(st->size) != sizeof(length) - && (ber_tlv_len_t)st->size != length) { - st->size = 0; - ASN__DECODE_FAILED; - } - - st->buf = (uint8_t *)MALLOC(length + 1); - if(!st->buf) { - st->size = 0; - ASN__DECODE_FAILED; - } - - memcpy(st->buf, buf_ptr, length); - st->buf[length] = '\0'; /* Just in case */ - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s", - (long)rval.consumed, - (long)length, td->name); - - return rval; -} - -/* - * Encode an always-primitive type using DER. - */ -asn_enc_rval_t -der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - - ASN_DEBUG("%s %s as a primitive type (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, - cb, app_key); - ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb && st->buf) { - if(cb(st->buf, st->size, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } else { - assert(st->buf || st->size == 0); - } - - erval.encoded += st->size; - ASN__ENCODED_OK(erval); -} - -void -ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as a primitive type", td->name); - - if(st->buf) - FREEMEM(st->buf); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); - break; - } -} - - -/* - * Local internal type passed around as an argument. - */ -struct xdp_arg_s { - const asn_TYPE_descriptor_t *type_descriptor; - void *struct_key; - xer_primitive_body_decoder_f *prim_body_decoder; - int decoded_something; - int want_more; -}; - -/* - * Since some kinds of primitive values can be encoded using value-specific - * tags (, , etc), the primitive decoder must - * be supplied with such tags to parse them as needed. - */ -static int -xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - /* - * The chunk_buf is guaranteed to start at '<'. - */ - assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); - - /* - * Decoding was performed once already. Prohibit doing it again. - */ - if(arg->decoded_something) - return -1; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return 0; - } - - return -1; -} - -static ssize_t -xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - size_t lead_wsp_size; - - if(arg->decoded_something) { - if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { - /* - * Example: - * "123 " - * ^- chunk_buf position. - */ - return chunk_size; - } - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - if(!have_more) { - /* - * If we've received something like "1", we can't really - * tell whether it is really `1` or `123`, until we know - * that there is no more data coming. - * The have_more argument will be set to 1 once something - * like this is available to the caller of this callback: - * "1want_more = 1; - return -1; - } - - lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); - chunk_buf = (const char *)chunk_buf + lead_wsp_size; - chunk_size -= lead_wsp_size; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return lead_wsp_size + chunk_size; - } - - return -1; -} - - -asn_dec_rval_t -xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - size_t struct_size, const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder) { - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t s_ctx; - struct xdp_arg_s s_arg; - asn_dec_rval_t rc; - - /* - * Create the structure if does not exist. - */ - if(!*sptr) { - *sptr = CALLOC(1, struct_size); - if(!*sptr) ASN__DECODE_FAILED; - } - - memset(&s_ctx, 0, sizeof(s_ctx)); - s_arg.type_descriptor = td; - s_arg.struct_key = *sptr; - s_arg.prim_body_decoder = prim_body_decoder; - s_arg.decoded_something = 0; - s_arg.want_more = 0; - - rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, - xml_tag, buf_ptr, size, - xer_decode__unexpected_tag, xer_decode__primitive_body); - switch(rc.code) { - case RC_OK: - if(!s_arg.decoded_something) { - char ch; - ASN_DEBUG("Primitive body is not recognized, " - "supplying empty one"); - /* - * Decoding opportunity has come and gone. - * Where's the result? - * Try to feed with empty body, see if it eats it. - */ - if(prim_body_decoder(s_arg.type_descriptor, - s_arg.struct_key, &ch, 0) - != XPBD_BODY_CONSUMED) { - /* - * This decoder does not like empty stuff. - */ - ASN__DECODE_FAILED; - } - } - break; - case RC_WMORE: - /* - * Redo the whole thing later. - * We don't have a context to save intermediate parsing state. - */ - rc.consumed = 0; - break; - case RC_FAIL: - rc.consumed = 0; - if(s_arg.want_more) - rc.code = RC_WMORE; - else - ASN__DECODE_FAILED; - break; - } - return rc; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs_prim.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs_prim.h deleted file mode 100644 index fbc5576..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_codecs_prim.h +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_CODECS_PRIM_H -#define ASN_CODECS_PRIM_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct ASN__PRIMITIVE_TYPE_s { - uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ - size_t size; /* Size of the buffer */ -} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ - -asn_struct_free_f ASN__PRIMITIVE_TYPE_free; -ber_type_decoder_f ber_decode_primitive; -der_type_encoder_f der_encode_primitive; - -/* - * A callback specification for the xer_decode_primitive() function below. - */ -enum xer_pbd_rval { - XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ - XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ - XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ - XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ - XPBD_BODY_CONSUMED /* Body is recognized and consumed */ -}; -typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( - const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, - size_t chunk_size); - -/* - * Specific function to decode simple primitive types. - * Also see xer_decode_general() in xer_decoder.h - */ -asn_dec_rval_t xer_decode_primitive( - const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, - size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_CODECS_PRIM_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_internal.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_internal.c deleted file mode 100644 index 1aff95f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_internal.c +++ /dev/null @@ -1,48 +0,0 @@ -#include - -ssize_t -asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, - const char *fmt, ...) { - char scratch[64]; - char *buf = scratch; - size_t buf_size = sizeof(scratch); - int wrote; - int cb_ret; - - do { - va_list args; - va_start(args, fmt); - - wrote = vsnprintf(buf, buf_size, fmt, args); - if(wrote < (ssize_t)buf_size) { - if(wrote < 0) { - if(buf != scratch) FREEMEM(buf); - va_end(args); - return -1; - } - break; - } - - buf_size <<= 1; - if(buf == scratch) { - buf = MALLOC(buf_size); - if(!buf) return -1; - } else { - void *p = REALLOC(buf, buf_size); - if(!p) { - FREEMEM(buf); - return -1; - } - buf = p; - } - } while(1); - - cb_ret = cb(buf, wrote, key); - if(buf != scratch) FREEMEM(buf); - if(cb_ret < 0) { - return -1; - } - - return wrote; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_internal.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_internal.h deleted file mode 100644 index c4105ad..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_internal.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Declarations internally useful for the ASN.1 support code. - */ -#ifndef ASN_INTERNAL_H -#define ASN_INTERNAL_H -#define __EXTENSIONS__ /* for Sun */ - -#include "asn_application.h" /* Application-visible API */ - -#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ -#include /* for assert() macro */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Environment version might be used to avoid running with the old library */ -#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ -int get_asn1c_environment_version(void); /* Run-time version */ - -#define CALLOC(nmemb, size) calloc(nmemb, size) -#define MALLOC(size) malloc(size) -#define REALLOC(oldptr, size) realloc(oldptr, size) -#define FREEMEM(ptr) free(ptr) - -#define asn_debug_indent 0 -#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) - -#ifdef EMIT_ASN_DEBUG -#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" -#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG -#endif - -/* - * A macro for debugging the ASN.1 internals. - * You may enable or override it. - */ -#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ -#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ -#if !defined(BELL_LABS) /* Bell Labs */ - //#if __STDC_VERSION__ >= 199901L -#ifdef ASN_THREAD_SAFE -/* Thread safety requires sacrifice in output indentation: - * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ -#else /* !ASN_THREAD_SAFE */ -#undef ASN_DEBUG_INDENT_ADD -#undef asn_debug_indent -int asn_debug_indent; -#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) -#endif /* ASN_THREAD_SAFE */ -#if defined(BELL_LABS) /* Bell Labs version */ -extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); -#define ASN_DEBUG(fmt, args...) do { \ - (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ - } while(0) -#else -#define ASN_DEBUG(fmt, args...) do { \ - int adi = asn_debug_indent; \ - while(adi--) fprintf(stderr, " "); \ - fprintf(stderr, fmt, ##args); \ - fprintf(stderr, " (%s:%d)\n", \ - __FILE__, __LINE__); \ - } while(0) -#endif /* BELL_LABS */ -#else /* !C99 */ -void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); -#define ASN_DEBUG ASN_DEBUG_f -#endif /* C99 */ -#else /* ASN_EMIT_DEBUG != 1 */ -#if __STDC_VERSION__ >= 199901L -#define ASN_DEBUG(...) do{}while(0) -#else /* not C99 */ -static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } -#endif /* C99 or better */ -#endif /* ASN_EMIT_DEBUG */ -#endif /* ASN_DEBUG */ - -/* - * Print to a callback. - * The callback is expected to return negative values on error. - * 0 and positive values are treated as success. - * RETURN VALUES: - * -1: Failed to format or invoke the callback. - * >0: Size of the data that got delivered to the callback. - */ -ssize_t CC_PRINTFLIKE(3, 4) -asn__format_to_callback( - int (*callback)(const void *, size_t, void *key), void *key, - const char *fmt, ...); - -/* - * Invoke the application-supplied callback and fail, if something is wrong. - */ -#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) -#define ASN__E_CALLBACK(size, foo) \ - do { \ - if(foo) goto cb_failed; \ - er.encoded += (size); \ - } while(0) -#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) -#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ - ASN__E_CALLBACK((size1) + (size2), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) -#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ - ASN__E_CALLBACK((size1) + (size2) + (size3), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ - || ASN__E_cbc(buf3, size3)) - -#define ASN__TEXT_INDENT(nl, level) \ - do { \ - int tmp_level = (level); \ - int tmp_nl = ((nl) != 0); \ - int tmp_i; \ - if(tmp_nl) ASN__CALLBACK("\n", 1); \ - if(tmp_level < 0) tmp_level = 0; \ - for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ - } while(0) - -#define _i_INDENT(nl) do { \ - int tmp_i; \ - if((nl) && cb("\n", 1, app_key) < 0) \ - return -1; \ - for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ - if(cb(" ", 4, app_key) < 0) \ - return -1; \ - } while(0) - -/* - * Check stack against overflow, if limit is set. - */ -#define ASN__DEFAULT_STACK_MAX (30000) -static int CC_NOTUSED -ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { - if(ctx && ctx->max_stack_size) { - - /* ctx MUST be allocated on the stack */ - ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); - if(usedstack > 0) usedstack = -usedstack; /* grows up! */ - - /* double negative required to avoid int wrap-around */ - if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { - ASN_DEBUG("Stack limit %ld reached", - (long)ctx->max_stack_size); - return -1; - } - } - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_INTERNAL_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_ioc.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_ioc.h deleted file mode 100644 index 7de210e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_ioc.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Run-time support for Information Object Classes. - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_IOC_H -#define ASN_IOC_H - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; -struct asn_ioc_cell_s; - -/* - * X.681, #13 - */ -typedef struct asn_ioc_set_s { - size_t rows_count; - size_t columns_count; - const struct asn_ioc_cell_s *rows; -} asn_ioc_set_t; - - -typedef struct asn_ioc_cell_s { - const char *field_name; /* Is equal to corresponding column_name */ - enum { - aioc__undefined = 0, - aioc__value, - aioc__type, - aioc__open_type, - } cell_kind; - struct asn_TYPE_descriptor_s *type_descriptor; - const void *value_sptr; - struct { - size_t types_count; - struct { - unsigned choice_position; - } *types; - } open_type; -} asn_ioc_cell_t; - - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_IOC_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_random_fill.c b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_random_fill.c deleted file mode 100644 index 819cf70..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_random_fill.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -int -asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, - size_t length) { - - if(td && td->op->random_fill) { - asn_random_fill_result_t res = - td->op->random_fill(td, struct_ptr, 0, length); - return (res.code == ARFILL_OK) ? 0 : -1; - } else { - return -1; - } -} - -static uintmax_t -asn__intmax_range(intmax_t lb, intmax_t ub) { - assert(lb <= ub); - if((ub < 0) == (lb < 0)) { - return ub - lb; - } else if(lb < 0) { - return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); - } else { - assert(!"Unreachable"); - return 0; - } -} - -intmax_t -asn_random_between(intmax_t lb, intmax_t rb) { - if(lb == rb) { - return lb; - } else { - const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); - uintmax_t range = asn__intmax_range(lb, rb); - uintmax_t value = 0; - uintmax_t got_entropy = 0; - - assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ - assert(range < intmax_max); - - for(; got_entropy < range;) { - got_entropy = (got_entropy << 24) | 0xffffff; - value = (value << 24) | (random() % 0xffffff); - } - - return lb + (intmax_t)(value % (range + 1)); - } -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_random_fill.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_random_fill.h deleted file mode 100644 index 47f9b8a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_random_fill.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_RANDOM_FILL -#define ASN_RANDOM_FILL - -/* Forward declarations */ -struct asn_TYPE_descriptor_s; -struct asn_encoding_constraints_s; - -/* - * Initialize a structure with random data according to the type specification - * and optional member constraints. - * ARGUMENTS: - * (max_length) - See (approx_max_length_limit). - * (memb_constraints) - Member constraints, if exist. - * The type can be constrained differently according - * to PER and OER specifications, so we find a value - * at the intersection of these constraints. - * In case the return differs from ARFILL_OK, the (struct_ptr) contents - * and (current_length) value remain in their original state. - */ -typedef struct asn_random_fill_result_s { - enum { - ARFILL_FAILED = -1, /* System error (memory?) */ - ARFILL_OK = 0, /* Initialization succeeded */ - ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ - } code; - size_t length; /* Approximate number of bytes created. */ -} asn_random_fill_result_t; -typedef asn_random_fill_result_t(asn_random_fill_f)( - const struct asn_TYPE_descriptor_s *td, void **struct_ptr, - const struct asn_encoding_constraints_s *memb_constraints, - size_t max_length); - -/* - * Returns 0 if the structure was properly initialized, -1 otherwise. - * The (approx_max_length_limit) specifies the approximate limit of the - * resulting structure in units closely resembling bytes. The actual result - * might be several times larger or smaller than the length limit. - */ -int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, - size_t approx_max_length_limit); - -/* - * Returns a random number between min and max. - */ -intmax_t asn_random_between(intmax_t min, intmax_t max); - -#endif /* ASN_RANDOM_FILL */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_system.h b/3rdparty/E2SM-gNB-X2-V4.0.1/asn_system.h deleted file mode 100644 index fa8cf11..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/asn_system.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Miscellaneous system-dependent types. - */ -#ifndef ASN_SYSTEM_H -#define ASN_SYSTEM_H - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE 1 -#endif - -#ifndef _BSD_SOURCE -#define _BSD_SOURCE /* for snprintf() on some linux systems */ -#endif - -#include /* For snprintf(3) */ -#include /* For *alloc(3) */ -#include /* For memcpy(3) */ -#include /* For size_t */ -#include /* For LONG_MAX */ -#include /* For va_start */ -#include /* for offsetof and ptrdiff_t */ - -#ifdef _WIN32 - -#include -#define snprintf _snprintf -#define vsnprintf _vsnprintf - -/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ -#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ - | (((l) << 8) & 0xff0000) \ - | (((l) >> 8) & 0xff00) \ - | ((l >> 24) & 0xff)) - -#ifdef _MSC_VER /* MSVS.Net */ -#ifndef __cplusplus -#define inline __inline -#endif -#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ -#define ssize_t SSIZE_T -#if _MSC_VER < 1600 -typedef char int8_t; -typedef short int16_t; -typedef int int32_t; -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -#else /* _MSC_VER >= 1600 */ -#include -#endif /* _MSC_VER < 1600 */ -#endif /* ASSUMESTDTYPES */ -#define WIN32_LEAN_AND_MEAN -#include -#include -#define isnan _isnan -#define finite _finite -#define copysign _copysign -#define ilogb _logb -#else /* !_MSC_VER */ -#include -#endif /* _MSC_VER */ - -#else /* !_WIN32 */ - -#if defined(__vxworks) -#include -#else /* !defined(__vxworks) */ - -#include /* C99 specifies this file */ -#include /* for ntohl() */ -#define sys_ntohl(foo) ntohl(foo) -#endif /* defined(__vxworks) */ - -#endif /* _WIN32 */ - -#if __GNUC__ >= 3 || defined(__clang__) -#define CC_ATTRIBUTE(attr) __attribute__((attr)) -#else -#define CC_ATTRIBUTE(attr) -#endif -#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) -#define CC_NOTUSED CC_ATTRIBUTE(unused) -#ifndef CC_ATTR_NO_SANITIZE -#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) -#endif - -/* Figure out if thread safety is requested */ -#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) -#define ASN_THREAD_SAFE -#endif /* Thread safety */ - -#ifndef offsetof /* If not defined by */ -#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) -#endif /* offsetof */ - -#ifndef MIN /* Suitable for comparing primitive types (integers) */ -#if defined(__GNUC__) -#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ - ((_a)<(_b)?(_a):(_b)); }) -#else /* !__GNUC__ */ -#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ -#endif /* __GNUC__ */ -#endif /* MIN */ - -#if __STDC_VERSION__ >= 199901L -#ifndef SIZE_MAX -#define SIZE_MAX ((~((size_t)0)) >> 1) -#endif - -#ifndef RSIZE_MAX /* C11, Annex K */ -#define RSIZE_MAX (SIZE_MAX >> 1) -#endif -#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ -#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) -#endif -#else /* Old compiler */ -#undef SIZE_MAX -#undef RSIZE_MAX -#undef RSSIZE_MAX -#define SIZE_MAX ((~((size_t)0)) >> 1) -#define RSIZE_MAX (SIZE_MAX >> 1) -#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) -#endif - -#if __STDC_VERSION__ >= 199901L -#define ASN_PRI_SIZE "zu" -#define ASN_PRI_SSIZE "zd" -#define ASN_PRIuMAX PRIuMAX -#define ASN_PRIdMAX PRIdMAX -#else -#define ASN_PRI_SIZE "lu" -#define ASN_PRI_SSIZE "ld" -#if LLONG_MAX > LONG_MAX -#define ASN_PRIuMAX "llu" -#define ASN_PRIdMAX "lld" -#else -#define ASN_PRIuMAX "lu" -#define ASN_PRIdMAX "ld" -#endif -#endif - -#endif /* ASN_SYSTEM_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_decoder.c b/3rdparty/E2SM-gNB-X2-V4.0.1/ber_decoder.c deleted file mode 100644 index 75d6016..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_decoder.c +++ /dev/null @@ -1,283 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - if(opt_ctx) opt_ctx->step = step; /* Save context */ \ - if(_code == RC_OK || opt_ctx) \ - rval.consumed = consumed_myself; \ - else \ - rval.consumed = 0; /* Context-free */ \ - return rval; \ - } while(0) - -/* - * The BER decoder of any type. - */ -asn_dec_rval_t -ber_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, - const void *ptr, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - ptr, size, /* Buffer and its size */ - 0 /* Default tag mode is 0 */ - ); -} - -/* - * Check the set of >> tags matches the definition. - */ -asn_dec_rval_t -ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, - const void *ptr, size_t size, int tag_mode, int last_tag_form, - ber_tlv_len_t *last_length, int *opt_tlv_form) { - ssize_t consumed_myself = 0; - ssize_t tag_len; - ssize_t len_len; - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_len_t limit_len = -1; - int expect_00_terminators = 0; - int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ - int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ - int tagno; - - /* - * Make sure we didn't exceed the maximum stack size. - */ - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - RETURN(RC_FAIL); - - /* - * So what does all this implicit skip stuff mean? - * Imagine two types, - * A ::= [5] IMPLICIT T - * B ::= [2] EXPLICIT T - * Where T is defined as - * T ::= [4] IMPLICIT SEQUENCE { ... } - * - * Let's say, we are starting to decode type A, given the - * following TLV stream: <5> <0>. What does this mean? - * It means that the type A contains type T which is, - * in turn, empty. - * Remember though, that we are still in A. We cannot - * just pass control to the type T decoder. Why? Because - * the type T decoder expects <4> <0>, not <5> <0>. - * So, we must make sure we are going to receive <5> while - * still in A, then pass control to the T decoder, indicating - * that the tag <4> was implicitly skipped. The decoder of T - * hence will be prepared to treat <4> as valid tag, and decode - * it appropriately. - */ - - tagno = step /* Continuing where left previously */ - + (tag_mode==1?-1:0) - ; - ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", - td->name, (long)size, tag_mode, step, tagno); - /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ - - if(tag_mode == 0 && tagno == (int)td->tags_count) { - /* - * This must be the _untagged_ ANY type, - * which outermost tag isn't known in advance. - * Fetch the tag and length separately. - */ - tag_len = ber_fetch_tag(ptr, size, &tlv_tag); - switch(tag_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - tlv_constr = BER_TLV_CONSTRUCTED(ptr); - len_len = ber_fetch_length(tlv_constr, - (const char *)ptr + tag_len, size - tag_len, &tlv_len); - switch(len_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - ASN_DEBUG("Advancing %ld in ANY case", - (long)(tag_len + len_len)); - ADVANCE(tag_len + len_len); - } else { - assert(tagno < (int)td->tags_count); /* At least one loop */ - } - for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { - - /* - * Fetch and process T from TLV. - */ - tag_len = ber_fetch_tag(ptr, size, &tlv_tag); - ASN_DEBUG("Fetching tag from {%p,%ld}: " - "len %ld, step %d, tagno %d got %s", - ptr, (long)size, - (long)tag_len, step, tagno, - ber_tlv_tag_string(tlv_tag)); - switch(tag_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(ptr); - - /* - * If {I}, don't check anything. - * If {I,B,C}, check B and C unless we're at I. - */ - if(tag_mode != 0 && step == 0) { - /* - * We don't expect tag to match here. - * It's just because we don't know how the tag - * is supposed to look like. - */ - } else { - assert(tagno >= 0); /* Guaranteed by the code above */ - if(tlv_tag != td->tags[tagno]) { - /* - * Unexpected tag. Too bad. - */ - ASN_DEBUG("Expected: %s, " - "expectation failed (tn=%d, tm=%d)", - ber_tlv_tag_string(td->tags[tagno]), - tagno, tag_mode - ); - RETURN(RC_FAIL); - } - } - - /* - * Attention: if there are more tags expected, - * ensure that the current tag is presented - * in constructed form (it contains other tags!). - * If this one is the last one, check that the tag form - * matches the one given in descriptor. - */ - if(tagno < ((int)td->tags_count - 1)) { - if(tlv_constr == 0) { - ASN_DEBUG("tlv_constr = %d, expfail", - tlv_constr); - RETURN(RC_FAIL); - } - } else { - if(last_tag_form != tlv_constr - && last_tag_form != -1) { - ASN_DEBUG("last_tag_form %d != %d", - last_tag_form, tlv_constr); - RETURN(RC_FAIL); - } - } - - /* - * Fetch and process L from TLV. - */ - len_len = ber_fetch_length(tlv_constr, - (const char *)ptr + tag_len, size - tag_len, &tlv_len); - ASN_DEBUG("Fetching len = %ld", (long)len_len); - switch(len_len) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - /* - * FIXME - * As of today, the chain of tags - * must either contain several indefinite length TLVs, - * or several definite length ones. - * No mixing is allowed. - */ - if(tlv_len == -1) { - /* - * Indefinite length. - */ - if(limit_len == -1) { - expect_00_terminators++; - } else { - ASN_DEBUG("Unexpected indefinite length " - "in a chain of definite lengths"); - RETURN(RC_FAIL); - } - ADVANCE(tag_len + len_len); - continue; - } else { - if(expect_00_terminators) { - ASN_DEBUG("Unexpected definite length " - "in a chain of indefinite lengths"); - RETURN(RC_FAIL); - } - } - - /* - * Check that multiple TLVs specify ever decreasing length, - * which is consistent. - */ - if(limit_len == -1) { - limit_len = tlv_len + tag_len + len_len; - if(limit_len < 0) { - /* Too great tlv_len value? */ - RETURN(RC_FAIL); - } - } else if(limit_len != tlv_len + tag_len + len_len) { - /* - * Inner TLV specifies length which is inconsistent - * with the outer TLV's length value. - */ - ASN_DEBUG("Outer TLV is %ld and inner is %ld", - (long)limit_len, (long)tlv_len); - RETURN(RC_FAIL); - } - - ADVANCE(tag_len + len_len); - - limit_len -= (tag_len + len_len); - if((ssize_t)size > limit_len) { - /* - * Make sure that we won't consume more bytes - * from the parent frame than the inferred limit. - */ - size = limit_len; - } - } - - if(opt_tlv_form) - *opt_tlv_form = tlv_constr; - if(expect_00_terminators) - *last_length = -expect_00_terminators; - else - *last_length = tlv_len; - - RETURN(RC_OK); -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_decoder.h b/3rdparty/E2SM-gNB-X2-V4.0.1/ber_decoder.h deleted file mode 100644 index 1ac2a5e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_decoder.h +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_DECODER_H_ -#define _BER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ -struct asn_codec_ctx_s; /* Forward declaration */ - -/* - * The BER decoder of any type. - * This function may be invoked directly from the application. - * Decodes BER, DER and CER data (DER and CER are different subsets of BER). - * - * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding - * which is compliant with ber_decode(). - */ -asn_dec_rval_t ber_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - -/* - * Type of generic function which decodes the byte stream into the structure. - */ -typedef asn_dec_rval_t(ber_type_decoder_f)( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, - const void *buf_ptr, size_t size, int tag_mode); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Check that all tags correspond to the type definition (as given in head). - * On return, last_length would contain either a non-negative length of the - * value part of the last TLV, or the negative number of expected - * "end of content" sequences. The number may only be negative if the - * head->last_tag_form is non-zero. - */ -asn_dec_rval_t ber_check_tags( - const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ - const struct asn_TYPE_descriptor_s *type_descriptor, - asn_struct_ctx_t *opt_ctx, /* saved decoding context */ - const void *ptr, size_t size, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {-1,0:1}: any, primitive, constr */ - ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_DECODER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_length.c b/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_length.c deleted file mode 100644 index 0a0deec..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_length.c +++ /dev/null @@ -1,168 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -ssize_t -ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, - ber_tlv_len_t *len_r) { - const uint8_t *buf = (const uint8_t *)bufptr; - unsigned oct; - - if(size == 0) - return 0; /* Want more */ - - oct = *(const uint8_t *)buf; - if((oct & 0x80) == 0) { - /* - * Short definite length. - */ - *len_r = oct; /* & 0x7F */ - return 1; - } else { - ber_tlv_len_t len; - size_t skipped; - - if(_is_constructed && oct == 0x80) { - *len_r = -1; /* Indefinite length */ - return 1; - } - - if(oct == 0xff) { - /* Reserved in standard for future use. */ - return -1; - } - - oct &= 0x7F; /* Leave only the 7 LS bits */ - for(len = 0, buf++, skipped = 1; - oct && (++skipped <= size); buf++, oct--) { - - /* Verify that we won't overflow. */ - if(!(len >> ((8 * sizeof(len)) - (8+1)))) { - len = (len << 8) | *buf; - } else { - /* Too large length value. */ - return -1; - } - } - - if(oct == 0) { - if(len < 0 || len > RSSIZE_MAX) { - /* Length value out of sane range. */ - return -1; - } - - *len_r = len; - return skipped; - } - - return 0; /* Want more */ - } - -} - -ssize_t -ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, - int _is_constructed, const void *ptr, size_t size) { - ber_tlv_len_t vlen; /* Length of V in TLV */ - ssize_t tl; /* Length of L in TLV */ - ssize_t ll; /* Length of L in TLV */ - size_t skip; - - /* - * Make sure we didn't exceed the maximum stack size. - */ - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - return -1; - - /* - * Determine the size of L in TLV. - */ - ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); - if(ll <= 0) return ll; - - /* - * Definite length. - */ - if(vlen >= 0) { - skip = ll + vlen; - if(skip > size) - return 0; /* Want more */ - return skip; - } - - /* - * Indefinite length! - */ - ASN_DEBUG("Skipping indefinite length"); - for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { - ber_tlv_tag_t tag; - - /* Fetch the tag */ - tl = ber_fetch_tag(ptr, size, &tag); - if(tl <= 0) return tl; - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - ((const char *)ptr) + tl, size - tl); - if(ll <= 0) return ll; - - skip += tl + ll; - - /* - * This may be the end of the indefinite length structure, - * two consecutive 0 octets. - * Check if it is true. - */ - if(((const uint8_t *)ptr)[0] == 0 - && ((const uint8_t *)ptr)[1] == 0) - return skip; - - ptr = ((const char *)ptr) + tl + ll; - size -= tl + ll; - } - - /* UNREACHABLE */ -} - -size_t -der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { - size_t required_size; /* Size of len encoding */ - uint8_t *buf = (uint8_t *)bufp; - uint8_t *end; - int i; - - if(len <= 127) { - /* Encoded in 1 octet */ - if(size) *buf = (uint8_t)len; - return 1; - } - - /* - * Compute the size of the subsequent bytes. - */ - for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { - if(len >> i) - required_size++; - else - break; - } - - if(size <= required_size) - return required_size + 1; - - *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ - - /* - * Produce the len encoding, space permitting. - */ - end = buf + required_size; - for(i -= 8; buf < end; i -= 8, buf++) - *buf = (uint8_t)(len >> i); - - return required_size + 1; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_length.h b/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_length.h deleted file mode 100644 index d1e4d48..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_length.h +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_TLV_LENGTH_H_ -#define _BER_TLV_LENGTH_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef ssize_t ber_tlv_len_t; - -/* - * This function tries to fetch the length of the BER TLV value and place it - * in *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - * On return with >0, len_r is constrained as -1..MAX, where -1 mean - * that the value is of indefinite length. - */ -ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, - ber_tlv_len_t *len_r); - -/* - * This function expects bufptr to be positioned over L in TLV. - * It returns number of bytes occupied by L and V together, suitable - * for skipping. The function properly handles indefinite length. - * RETURN VALUES: - * Standard {-1,0,>0} convention. - */ -ssize_t ber_skip_length( - const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ - int _is_constructed, const void *bufptr, size_t size); - -/* - * This function serializes the length (L from TLV) in DER format. - * It always returns number of bytes necessary to represent the length, - * it is a caller's responsibility to check the return value - * against the supplied buffer's size. - */ -size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_tag.c b/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_tag.c deleted file mode 100644 index 4a7d732..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_tag.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -ssize_t -ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { - ber_tlv_tag_t val; - ber_tlv_tag_t tclass; - size_t skipped; - - if(size == 0) - return 0; - - val = *(const uint8_t *)ptr; - tclass = (val >> 6); - if((val &= 0x1F) != 0x1F) { - /* - * Simple form: everything encoded in a single octet. - * Tag Class is encoded using two least significant bits. - */ - *tag_r = (val << 2) | tclass; - return 1; - } - - /* - * Each octet contains 7 bits of useful information. - * The MSB is 0 if it is the last octet of the tag. - */ - for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; - skipped <= size; - ptr = ((const char *)ptr) + 1, skipped++) { - unsigned int oct = *(const uint8_t *)ptr; - if(oct & 0x80) { - val = (val << 7) | (oct & 0x7F); - /* - * Make sure there are at least 9 bits spare - * at the MS side of a value. - */ - if(val >> ((8 * sizeof(val)) - 9)) { - /* - * We would not be able to accomodate - * any more tag bits. - */ - return -1; - } - } else { - val = (val << 7) | oct; - *tag_r = (val << 2) | tclass; - return skipped; - } - } - - return 0; /* Want more */ -} - - -ssize_t -ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { - char buf[sizeof("[APPLICATION ]") + 32]; - ssize_t ret; - - ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); - if(ret >= (ssize_t)sizeof(buf) || ret < 2) { - errno = EPERM; - return -1; - } - - return fwrite(buf, 1, ret, f); -} - -ssize_t -ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { - const char *type = 0; - int ret; - - switch(tag & 0x3) { - case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; - case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; - case ASN_TAG_CLASS_CONTEXT: type = ""; break; - case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; - } - - ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); - if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ - - return ret; -} - -char * -ber_tlv_tag_string(ber_tlv_tag_t tag) { - static char buf[sizeof("[APPLICATION ]") + 32]; - - (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); - - return buf; -} - - -size_t -ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { - int tclass = BER_TAG_CLASS(tag); - ber_tlv_tag_t tval = BER_TAG_VALUE(tag); - uint8_t *buf = (uint8_t *)bufp; - uint8_t *end; - size_t required_size; - size_t i; - - if(tval <= 30) { - /* Encoded in 1 octet */ - if(size) buf[0] = (tclass << 6) | tval; - return 1; - } else if(size) { - *buf++ = (tclass << 6) | 0x1F; - size--; - } - - /* - * Compute the size of the subsequent bytes. - */ - for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { - if(tval >> i) - required_size++; - else - break; - } - - if(size < required_size) - return required_size + 1; - - /* - * Fill in the buffer, space permitting. - */ - end = buf + required_size - 1; - for(i -= 7; buf < end; i -= 7, buf++) - *buf = 0x80 | ((tval >> i) & 0x7F); - *buf = (tval & 0x7F); /* Last octet without high bit */ - - return required_size + 1; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_tag.h b/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_tag.h deleted file mode 100644 index ce227ad..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/ber_tlv_tag.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_TLV_TAG_H_ -#define _BER_TLV_TAG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -enum asn_tag_class { - ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ - ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ - ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ - ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ -}; -typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ - -/* - * Tag class is encoded together with tag value for optimization purposes. - */ -#define BER_TAG_CLASS(tag) ((tag) & 0x3) -#define BER_TAG_VALUE(tag) ((tag) >> 2) -#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) - -#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) - -/* - * Several functions for printing the TAG in the canonical form - * (i.e. "[PRIVATE 0]"). - * Return values correspond to their libc counterparts (if any). - */ -ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); -ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); -char *ber_tlv_tag_string(ber_tlv_tag_t tag); - - -/* - * This function tries to fetch the tag from the input stream. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering tag. - * >0: Number of bytes used from bufptr. tag_r will contain the tag. - */ -ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); - -/* - * This function serializes the tag (T from TLV) in BER format. - * It always returns number of bytes necessary to represent the tag, - * it is a caller's responsibility to check the return value - * against the supplied buffer's size. - */ -size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_TLV_TAG_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_CHOICE.c b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_CHOICE.c deleted file mode 100644 index 613e6ea..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_CHOICE.c +++ /dev/null @@ -1,1511 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * See the definitions. - */ -static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, - unsigned size); -static void _set_present_idx(void *sptr, unsigned offset, unsigned size, - unsigned pres); -static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, - const void *sptr, asn_TYPE_member_t **elm, - unsigned *present); - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * The decoder of the CHOICE type. - */ -asn_dec_rval_t -CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - if(tag_mode || td->tags_count) { - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, -1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) { - /* ?Substracted below! */ - ctx->left += rval.consumed; - } - ADVANCE(rval.consumed); - } else { - ctx->left = -1; - } - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - - key.el_tag = tlv_tag; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG("Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - - ASN_DEBUG("Skipping unknown tag %s", - ber_tlv_tag_string(tlv_tag)); - - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - RETURN(RC_OK); - } - } while(0); - - case 2: - /* - * PHASE 2. - * Read in the element. - */ - do { - asn_TYPE_member_t *elm;/* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &elements[ctx->step]; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - /* Set presence to be able to free it properly at any time */ - _set_present_idx(st, specs->pres_offset, - specs->pres_size, ctx->step + 1); - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, - memb_ptr2, ptr, LEFT, elm->tag_mode); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - RETURN(RC_FAIL); - case RC_FAIL: /* Fatal error */ - RETURN(rval.code); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } while(0); - - NEXT_PHASE(ctx); - - /* Fall through */ - case 3: - ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", - td->name, (long)ctx->left, (long)size, - tag_mode, td->tags_count); - - if(ctx->left > 0) { - /* - * The type must be fully decoded - * by the CHOICE member-specific decoder. - */ - RETURN(RC_FAIL); - } - - if(ctx->left == -1 - && !(tag_mode || td->tags_count)) { - /* - * This is an untagged CHOICE. - * It doesn't contain nothing - * except for the member itself, including all its tags. - * The decoding is completed. - */ - NEXT_PHASE(ctx); - break; - } - - /* - * Read in the "end of data chunks"'s. - */ - while(ctx->left < 0) { - ssize_t tl; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * Expected <0><0>... - */ - if(((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - continue; - } - } else { - ASN_DEBUG("Unexpected continuation in %s", - td->name); - RETURN(RC_FAIL); - } - - /* UNREACHABLE */ - } - - NEXT_PHASE(ctx); - case 4: - /* No meaningful work here */ - break; - } - - RETURN(RC_OK); -} - -asn_enc_rval_t -CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - asn_enc_rval_t erval = {0,0,0}; - const void *memb_ptr; - size_t computed_size = 0; - unsigned present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("%s %s as CHOICE", - cb?"Encoding":"Estimating", td->name); - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) { - if(present == 0 && td->elements_count == 0) { - /* The CHOICE is empty?! */ - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - ASN__ENCODE_FAILED; - } - - /* - * Seek over the present member of the structure. - */ - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - if(elm->optional) { - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* - * If the CHOICE itself is tagged EXPLICIT: - * T ::= [2] EXPLICIT CHOICE { ... } - * Then emit the appropriate tags. - */ - if(tag_mode == 1 || td->tags_count) { - /* - * For this, we need to pre-compute the member. - */ - ssize_t ret; - - /* Encode member with its tag */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - - /* Encode CHOICE with parent or my own tag */ - ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, - cb, app_key); - if(ret == -1) - ASN__ENCODE_FAILED; - computed_size += ret; - } - - /* - * Encode the single underlying member. - */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, cb, app_key); - if(erval.encoded == -1) - return erval; - - ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", - (long)erval.encoded, (long)computed_size); - - erval.encoded += computed_size; - - return erval; -} - -ber_tlv_tag_t -CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - assert(tag_mode == 0); (void)tag_mode; - assert(tag == 0); (void)tag; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - if(present > 0 && present <= td->elements_count) { - const asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *) - ((const char *)ptr + elm->memb_offset); - } else { - memb_ptr = (const void *) - ((const char *)ptr + elm->memb_offset); - } - - return asn_TYPE_outmost_tag(elm->type, memb_ptr, - elm->tag_mode, elm->tag); - } else { - return (ber_tlv_tag_t)-1; - } -} - -int -CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - return 0; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory CHOICE element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: no CHOICE element given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value of a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - if(ctx->phase == 0 && !*xml_tag) - ctx->phase = 1; /* Skip the outer tag checking phase */ - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Only waiting for closing tag. - * Phase 4: Skipping unknown extensions. - * Phase 5: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 4;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the member. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - unsigned old_present; - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Start/Continue decoding the inner member */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", - elm->type->name, tmprval.code); - old_present = _fetch_present_idx(st, - specs->pres_offset, specs->pres_size); - assert(old_present == 0 || old_present == edx + 1); - /* Record what we've got */ - _set_present_idx(st, - specs->pres_offset, specs->pres_size, edx + 1); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 3; - /* Fall through */ - } - - /* No need to wait for closing tag; special mode. */ - if(ctx->phase == 3 && !*xml_tag) { - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - xml_tag, tcv); - - /* Skip the extensions section */ - if(ctx->phase == 4) { - ASN_DEBUG("skip_unknown(%d, %ld)", - tcv, (long)ctx->left); - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 5; - RETURN(RC_FAIL); - case 1: - ctx->phase = 3; - /* Fall through */ - case 0: - XER_ADVANCE(ch_size); - continue; - case 2: - ctx->phase = 3; - break; - } - } - - switch(tcv) { - case XCT_BOTH: - break; /* No CHOICE? */ - case XCT_CLOSING: - if(ctx->phase != 3) - break; - XER_ADVANCE(ch_size); - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - if(ctx->phase != 1) - break; /* Really unexpected */ - - /* - * Search which inner member corresponds to this tag. - */ - for(edx = 0; edx < td->elements_count; edx++) { - elm = &td->elements[edx]; - tcv = xer_check_tag(buf_ptr,ch_size,elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - edx = td->elements_count; - break; /* Phase out */ - } - break; - } - if(edx != td->elements_count) - continue; - - /* It is expected extension */ - if(specs->ext_start != -1) { - ASN_DEBUG("Got anticipated extension"); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - ctx->phase = 3; /* Terminating */ - } else { - ctx->left = 1; - ctx->phase = 4; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" - " (ph=%d, tag=%s)", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - td->name, ctx->phase, xml_tag); - break; - } - - ctx->phase = 5; /* Phase out, just in case */ - RETURN(RC_FAIL); -} - - -asn_enc_rval_t -CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - unsigned present = 0; - - if(!sptr) - ASN__ENCODE_FAILED; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr = NULL; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - er.encoded = 0; - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_dec_rval_t -CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) { - ASN_DEBUG("CHOICE presence from wire %d", value); - value = specs->from_canonical_order[value]; - ASN_DEBUG("CHOICE presence index effective %d", value); - } - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - if(ct && ct->range_bits >= 0) { - if(present_enc < ct->lower_bound - || present_enc > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG( - "CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - - elm = &td->elements[present]; - ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, - present_enc); - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) ASN__ENCODE_FAILED; - if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -asn_dec_rval_t -CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) - value = specs->from_canonical_order[value]; - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - int present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || (unsigned)present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present = specs->to_canonical_order[present]; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - if(ct && ct->range_bits >= 0) { - if(present < ct->lower_bound - || present > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) - ASN__ENCODE_FAILED; - if (ct) { - if(aper_put_nsnnwn(po, ct->range_bits, present - specs->ext_start)) - ASN__ENCODE_FAILED; - } - if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -int -CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - /* - * Print that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Print member's name and stuff */ - if(0) { - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - } - - return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, - cb, app_key); - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as CHOICE", td->name); - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - /* - * Free that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)ptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)ptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } -} - - -/* - * The following functions functions offer protection against -fshort-enums, - * compatible with little- and big-endian machines. - * If assertion is triggered, either disable -fshort-enums, or add an entry - * here with the ->pres_size of your target stracture. - * Unless the target structure is packed, the ".present" member - * is guaranteed to be aligned properly. ASN.1 compiler itself does not - * produce packed code. - */ -static unsigned -_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, - unsigned pres_size) { - const void *present_ptr; - unsigned present; - - present_ptr = ((const char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): present = *(const unsigned int *)present_ptr; break; - case sizeof(short): present = *(const unsigned short *)present_ptr; break; - case sizeof(char): present = *(const unsigned char *)present_ptr; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - return 0; /* If not aborted, pass back safe value */ - } - - return present; -} - -static void -_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, - unsigned present) { - void *present_ptr; - present_ptr = ((char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): *(unsigned int *)present_ptr = present; break; - case sizeof(short): *(unsigned short *)present_ptr = present; break; - case sizeof(char): *(unsigned char *)present_ptr = present; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - } -} - -static const void * -_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_TYPE_member_t **elm_ptr, unsigned *present_out) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - *elm_ptr = NULL; - *present_out = 0; - return NULL; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - *present_out = present; - - /* - * The presence index is intentionally 1-based to avoid - * treating zeroed structure as a valid one. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *const elm = &td->elements[present - 1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - *elm_ptr = elm; - return memb_ptr; - } else { - *elm_ptr = NULL; - return NULL; - } - -} - -int -CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - asn_TYPE_member_t *aelm; - asn_TYPE_member_t *belm; - unsigned apresent = 0; - unsigned bpresent = 0; - const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); - const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); - - if(amember && bmember) { - if(apresent == bpresent) { - assert(aelm == belm); - return aelm->type->op->compare_struct(aelm->type, amember, bmember); - } else if(apresent < bpresent) { - return -1; - } else { - return 1; - } - } else if(!amember) { - return -1; - } else { - return 1; - } -} - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned -CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); -} - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int -CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, - unsigned present) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned old_present; - - if(!sptr) { - return -1; - } - - if(present > td->elements_count) - return -1; - - old_present = - _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - if(present == old_present) - return 0; - - if(old_present != 0) { - assert(old_present <= td->elements_count); - ASN_STRUCT_RESET(*td, sptr); - } - - _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); - - return 0; -} - - -asn_random_fill_result_t -CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_random_fill_result_t res; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm; - unsigned present; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *st = *sptr; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - present = asn_random_between(1, td->elements_count); - elm = &td->elements[present - 1]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - res = elm->type->op->random_fill(elm->type, memb_ptr2, - &elm->encoding_constraints, max_length); - _set_present_idx(st, specs->pres_offset, specs->pres_size, present); - if(res.code == ARFILL_OK) { - *sptr = st; - } else { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - } - - return res; -} - - -asn_TYPE_operation_t asn_OP_CHOICE = { - CHOICE_free, - CHOICE_print, - CHOICE_compare, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - CHOICE_decode_oer, - CHOICE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - CHOICE_decode_uper, - CHOICE_encode_uper, - CHOICE_decode_aper, - CHOICE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - CHOICE_random_fill, - CHOICE_outmost_tag -}; diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_CHOICE.h b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_CHOICE.h deleted file mode 100644 index a1999ed..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_CHOICE.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_CHOICE_H_ -#define _CONSTR_CHOICE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct asn_CHOICE_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the target structure. */ - unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ - unsigned pres_offset; /* Identifier of the present member */ - unsigned pres_size; /* Size of the identifier (enum) */ - - /* - * Tags to members mapping table. - */ - const asn_TYPE_tag2member_t *tag2el; - unsigned tag2el_count; - - /* Canonical ordering of CHOICE elements, for PER */ - const unsigned *to_canonical_order; - const unsigned *from_canonical_order; - - /* - * Extensions-related stuff. - */ - signed ext_start; /* First member of extensions, or -1 */ -} asn_CHOICE_specifics_t; - -/* - * A set specialized functions dealing with the CHOICE type. - */ -asn_struct_free_f CHOICE_free; -asn_struct_print_f CHOICE_print; -asn_struct_compare_f CHOICE_compare; -asn_constr_check_f CHOICE_constraint; -ber_type_decoder_f CHOICE_decode_ber; -der_type_encoder_f CHOICE_encode_der; -xer_type_decoder_f CHOICE_decode_xer; -xer_type_encoder_f CHOICE_encode_xer; -oer_type_decoder_f CHOICE_decode_oer; -oer_type_encoder_f CHOICE_encode_oer; -per_type_decoder_f CHOICE_decode_uper; -per_type_encoder_f CHOICE_encode_uper; -per_type_decoder_f CHOICE_decode_aper; -per_type_encoder_f CHOICE_encode_aper; -asn_outmost_tag_f CHOICE_outmost_tag; -asn_random_fill_f CHOICE_random_fill; -extern asn_TYPE_operation_t asn_OP_CHOICE; - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, - const void *structure_ptr); - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, - void *structure_ptr, unsigned present); - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_CHOICE_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE.c b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE.c deleted file mode 100644 index 43dcac7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE.c +++ /dev/null @@ -1,2059 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -/* - * Tags are canonically sorted in the tag2element map. - */ -static int -_t2e_cmp(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) { - if(a->el_no > b->el_no) - return 1; - /* - * Important: we do not check - * for a->el_no <= b->el_no! - */ - return 0; - } else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - - -/* - * The decoder of the SEQUENCE type. - */ -asn_dec_rval_t -SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* SEQUENCE element's index */ - - ASN_DEBUG("Decoding %s as SEQUENCE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next member from the list of - * this structure's elements. - * (ctx->step) stores the member being processed - * between invocations and the microphase {0,1} of parsing - * that member: - * step = ( * 2 + ). - */ - for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; - edx++, ctx->step = (ctx->step & ~1) + 2) { - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - ssize_t tag_len; /* Length of TLV's T */ - size_t opt_edx_end; /* Next non-optional element */ - size_t n; - int use_bsearch; - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" - " opt=%d ec=%d", - td->name, (int)ctx->left, edx, - elements[edx].flags, elements[edx].optional, - td->elements_count); - - if(ctx->left == 0 /* No more stuff is expected */ - && ( - /* Explicit OPTIONAL specification reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx))) { - ASN_DEBUG("End of SEQUENCE %s", td->name); - /* - * Found the legitimate end of the structure. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " - "(%s) is %s encoded in %d bytes, of frame %ld", - td->name, edx, elements[edx].name, - ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } else if(((const uint8_t *)ptr)[1] == 0) { - ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, - elements[edx].optional, td->elements_count); - if((edx + elements[edx].optional == td->elements_count) - || IN_EXTENSION_GROUP(specs, edx)) { - /* - * Yeah, baby! Found the terminator - * of the indefinite length structure. - */ - /* - * Proceed to the canonical - * finalization function. - * No advancing is necessary. - */ - goto phase3; - } - } - } - - /* - * Find the next available type with this tag. - */ - use_bsearch = 0; - opt_edx_end = edx + elements[edx].optional + 1; - if(opt_edx_end > td->elements_count) - opt_edx_end = td->elements_count; /* Cap */ - else if(opt_edx_end - edx > 8) { - /* Limit the scope of linear search... */ - opt_edx_end = edx + 8; - use_bsearch = 1; - /* ... and resort to bsearch() */ - } - for(n = edx; n < opt_edx_end; n++) { - if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { - /* - * Found element corresponding to the tag - * being looked at. - * Reposition over the right element. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].flags & ATF_ANY_TYPE) { - /* - * This is the ANY type, which may bear - * any flag whatsoever. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].tag == (ber_tlv_tag_t)-1) { - use_bsearch = 1; - break; - } - } - if(use_bsearch) { - /* - * Resort to a binary search over - * sorted array of tags. - */ - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - key.el_no = edx; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _t2e_cmp); - if(t2m) { - const asn_TYPE_tag2member_t *best = 0; - const asn_TYPE_tag2member_t *t2m_f, *t2m_l; - size_t edx_max = edx + elements[edx].optional; - /* - * Rewind to the first element with that tag, - * `cause bsearch() does not guarantee order. - */ - t2m_f = t2m + t2m->toff_first; - t2m_l = t2m + t2m->toff_last; - for(t2m = t2m_f; t2m <= t2m_l; t2m++) { - if(t2m->el_no > edx_max) break; - if(t2m->el_no < edx) continue; - best = t2m; - } - if(best) { - edx = best->el_no; - ctx->step = 1 + 2 * edx; - goto microphase2; - } - } - n = opt_edx_end; - } - if(n == opt_edx_end) { - /* - * If tag is unknown, it may be either - * an unknown (thus, incorrect) tag, - * or an extension (...), - * or an end of the indefinite-length structure. - */ - if(!IN_EXTENSION_GROUP(specs, - edx + elements[edx].optional)) { - ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - ASN_DEBUG("Expected tag %s (%s)%s", - ber_tlv_tag_string(elements[edx].tag), - elements[edx].name, - elements[edx].optional - ?" or alternatives":""); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - edx += elements[edx].optional; - - ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - ASN_DEBUG("Skip length %d in %s", - (int)skip, td->name); - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - ctx->step -= 2; - edx--; - continue; /* Try again with the next tag */ - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elements[edx].flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elements[edx].memb_offset; - memb_ptr2 = &memb_ptr; - } - /* - * Invoke the member fetch routine according to member's type - */ - if(elements[edx].flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); - } else { - rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, - elements[edx].type, - memb_ptr2, ptr, LEFT, - elements[edx].tag_mode); - } - ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " - "in %d bytes rval.code %d, size=%d", - td->name, edx, elements[edx].type->name, - (int)LEFT, (int)rval.consumed, rval.code, (int)size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", - (long)ctx->left, (long)size); - /* Fall through */ - case RC_FAIL: /* Fatal error */ - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all structure members) */ - - phase3: - ctx->phase = 3; - /* Fall through */ - case 3: /* 00 and other tags expected */ - case 4: /* only 00's expected */ - - ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", - td->name, (long)ctx->left, (long)size); - - /* - * Skip everything until the end of the SEQUENCE. - */ - while(ctx->left) { - ssize_t tl, ll; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * If expected <0><0>... - */ - if(ctx->left < 0 - && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - ctx->phase = 4; - continue; - } - } - - if(!IN_EXTENSION_GROUP(specs, td->elements_count) - || ctx->phase == 4) { - ASN_DEBUG("Unexpected continuation " - "of a non-extensible type " - "%s (SEQUENCE): %s", - td->name, - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tl, LEFT - tl); - switch(ll) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(tl + ll); - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - - -/* - * The DER encoder of the SEQUENCE type. - */ -asn_enc_rval_t -SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t computed_size = 0; - asn_enc_rval_t erval = {0,0,0}; - ssize_t ret; - size_t edx; - - ASN_DEBUG("%s %s as SEQUENCE", - cb?"Encoding":"Estimating", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", - edx, elm->name, (long)erval.encoded); - } - - /* - * Encode the TLV for the sequence itself. - */ - ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); - if(ret == -1) - ASN__ENCODE_FAILED; - erval.encoded = computed_size + ret; - - if(!cb) ASN__ENCODED_OK(erval); - - /* - * Encode all members. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t tmperval = {0,0,0}; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) continue; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, cb, app_key); - if(tmperval.encoded == -1) - return tmperval; - computed_size -= tmperval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", - edx, elm->name, td->name, (long)tmperval.encoded); - } - - if(computed_size != 0) - /* - * Encoded size is not equal to the computed size. - */ - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(erval); -} - - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) \ - do { \ - size_t num = (num_bytes); \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Skipping unknown extensions. - * Phase 4: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 3;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the inner member of a sequence. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr_dontuse; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr_dontuse = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ - } - - if(elm->flags & ATF_OPEN_TYPE) { - tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - /* Invoke the inner type decoder, m.b. multiple times */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - ptr, size); - } - XER_ADVANCE(tmprval.consumed); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 1; /* Back to body processing */ - ctx->step = ++edx; - ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", - ctx->phase, ctx->step); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", - tcv, ctx->phase, xml_tag); - - /* Skip the extensions section */ - if(ctx->phase == 3) { - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 4; - RETURN(RC_FAIL); - case 0: - XER_ADVANCE(ch_size); - continue; - case 1: - XER_ADVANCE(ch_size); - ctx->phase = 1; - continue; - case 2: - ctx->phase = 1; - break; - } - } - - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - if(edx >= td->elements_count || - /* Explicit OPTIONAL specs reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx)) { - XER_ADVANCE(ch_size); - ctx->phase = 4; /* Phase out */ - RETURN(RC_OK); - } else { - ASN_DEBUG("Premature end of XER SEQUENCE"); - RETURN(RC_FAIL); - } - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", - tcv, ctx->phase, edx); - if(ctx->phase != 1) { - break; /* Really unexpected */ - } - - if(edx < td->elements_count) { - /* - * Search which member corresponds to this tag. - */ - size_t n; - size_t edx_end = edx + elements[edx].optional + 1; - if(edx_end > td->elements_count) - edx_end = td->elements_count; - for(n = edx; n < edx_end; n++) { - elm = &td->elements[n]; - tcv = xer_check_tag(ptr, ch_size, elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx = n; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - n = edx_end; - break; /* Phase out */ - } - break; - } - if(n != edx_end) - continue; - } else { - ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", - edx, td->elements_count); - } - - /* It is expected extension */ - if(IN_EXTENSION_GROUP(specs, - edx + (edx < td->elements_count - ? elements[edx].optional : 0))) { - ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", - edx); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - } else { - ctx->left = 1; - ctx->phase = 3; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", - size>0?((const char *)ptr)[0]:'.', - size>1?((const char *)ptr)[1]:'.', - size>2?((const char *)ptr)[2]:'.', - size>3?((const char *)ptr)[3]:'.', - size>4?((const char *)ptr)[4]:'.', - size>5?((const char *)ptr)[5]:'.'); - break; - } - - ctx->phase = 4; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - -asn_enc_rval_t -SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - int xcan = (flags & XER_F_CANONICAL); - asn_TYPE_descriptor_t *tmp_def_val_td = 0; - void *tmp_def_val = 0; - size_t edx; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - assert(tmp_def_val == 0); - if(elm->default_value_set) { - if(elm->default_value_set(&tmp_def_val)) { - ASN__ENCODE_FAILED; - } else { - memb_ptr = tmp_def_val; - tmp_def_val_td = elm->type; - } - } else if(elm->optional) { - continue; - } else { - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - /* Print the member itself */ - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmp_def_val) { - ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - tmp_def_val = 0; - } - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - ASN__ENCODE_FAILED; -} - -int -SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t edx; - int ret; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Print line */ - /* Fall through */ - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Indentation */ - _i_INDENT(1); - - /* Print the member's name and stuff */ - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - - /* Print the member itself */ - ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, - cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - size_t edx; - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_struct_ctx_t *ctx; /* Decoder context */ - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as SEQUENCE", td->name); - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - /* Clean parsing context */ - ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); - FREEMEM(ctx->ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset( - sptr, 0, - ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); - break; - } -} - -int -SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t edx; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Iterate over structure members and check their validity. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - if(ret) return ret; - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; - edx < (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = uper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, (long)bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, - *memb_ptr2); - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: break; - case 0: continue; - default: - if(uper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - ASN_DEBUG("Skipped overflow extension"); - continue; - } - break; - } - - FREEMEM(epres); - } - - if(specs->first_extension >= 0) { - unsigned i; - /* Fill DEFAULT members in extensions */ - for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; - i++) { - asn_TYPE_member_t *elm; - void **memb_ptr2; /* Pointer to member pointer */ - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) { - return -1; - } - /* Encode as open type field */ - if(po2 && present - && uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - *memb_ptr2, po2)) - return -1; - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(*memb_ptr2) == 0) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, - po); - if(er.encoded == -1) return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of extensions %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(uper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ -#if 0 - int padding; -#endif - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } -#if 0 - /* Get Padding */ - padding = (8 - (pd->moved % 8)) % 8; - if(padding > 0) - ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); -#if 0 /* old way of removing padding */ - per_get_few_bits(pd, padding); -#else /* Experimental fix proposed by @mhanna123 */ - if(edx != (td->elements_count-1)) - per_get_few_bits(pd, padding); - else { - if(specs->roms_count && (padding > 0)) - ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); - else - per_get_few_bits(pd, padding); - } -#endif /* dealing with padding */ -#endif - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = aper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) - ASN__DECODE_STARVED; - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%ld is not extension", edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: - break; - case 0: - continue; - default: - if(aper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - } - break; - } - - FREEMEM(epres); - } - - /* Fill DEFAULT members in extensions */ - for(edx = specs->roms_count; edx < specs->roms_count - + specs->aoms_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void **memb_ptr2; /* Pointer to member pointer */ - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s (@%ld) present => %d", - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) - return -1; - /* Encode as open type field */ - if(po2 && present && aper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) - return -1; - - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr2) == 1) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %ld not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) - continue; - - ASN_DEBUG("Encoding %s->%s", td->name, elm->name); - er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - *memb_ptr2, po); - if(er.encoded == -1) - return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(aper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - size_t edx; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *amemb; - const void *bmemb; - int ret; - - if(elm->flags & ATF_POINTER) { - amemb = - *(const void *const *)((const char *)aptr + elm->memb_offset); - bmemb = - *(const void *const *)((const char *)bptr + elm->memb_offset); - if(!amemb) { - if(!bmemb) continue; - if(elm->default_value_cmp - && elm->default_value_cmp(bmemb) == 0) { - /* A is absent, but B is present and equal to DEFAULT */ - continue; - } - return -1; - } else if(!bmemb) { - if(elm->default_value_cmp - && elm->default_value_cmp(amemb) == 0) { - /* B is absent, but A is present and equal to DEFAULT */ - continue; - } - return 1; - } - } else { - amemb = (const void *)((const char *)aptr + elm->memb_offset); - bmemb = (const void *)((const char *)bptr + elm->memb_offset); - } - - ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); - if(ret != 0) return ret; - } - - return 0; -} - -asn_TYPE_operation_t asn_OP_SEQUENCE = { - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_compare, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_decode_oer, - SEQUENCE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_decode_uper, - SEQUENCE_encode_uper, - SEQUENCE_decode_aper, - SEQUENCE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - void *st = *sptr; - size_t edx; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - for(edx = 0; edx < td->elements_count; edx++) { - const asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_random_fill_result_t tmpres; - - if(elm->optional && asn_random_between(0, 4) == 2) { - /* Sometimes decide not to fill the optional value */ - continue; - } - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - tmpres = elm->type->op->random_fill( - elm->type, memb_ptr2, &elm->encoding_constraints, - max_length > result_ok.length ? max_length - result_ok.length : 0); - switch(tmpres.code) { - case ARFILL_OK: - result_ok.length += tmpres.length; - continue; - case ARFILL_SKIPPED: - assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); - continue; - case ARFILL_FAILED: - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return tmpres; - } - } - - *sptr = st; - - return result_ok; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE.h b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE.h deleted file mode 100644 index a22ed3a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SEQUENCE_H_ -#define _CONSTR_SEQUENCE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct asn_SEQUENCE_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the target structure. */ - unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - /* - * Tags to members mapping table (sorted). - */ - const asn_TYPE_tag2member_t *tag2el; - unsigned tag2el_count; - - /* - * Optional members of the extensions root (roms) or additions (aoms). - * Meaningful for PER. - */ - const int *oms; /* Optional MemberS */ - unsigned roms_count; /* Root optional members count */ - unsigned aoms_count; /* Additions optional members count */ - - /* - * Description of an extensions group. - * Root components are clustered at the beginning of the structure, - * whereas extensions are clustered at the end. -1 means not extensible. - */ - signed first_extension; /* First extension addition */ -} asn_SEQUENCE_specifics_t; - - -/* - * A set specialized functions dealing with the SEQUENCE type. - */ -asn_struct_free_f SEQUENCE_free; -asn_struct_print_f SEQUENCE_print; -asn_struct_compare_f SEQUENCE_compare; -asn_constr_check_f SEQUENCE_constraint; -ber_type_decoder_f SEQUENCE_decode_ber; -der_type_encoder_f SEQUENCE_encode_der; -xer_type_decoder_f SEQUENCE_decode_xer; -xer_type_encoder_f SEQUENCE_encode_xer; -oer_type_decoder_f SEQUENCE_decode_oer; -oer_type_encoder_f SEQUENCE_encode_oer; -per_type_decoder_f SEQUENCE_decode_uper; -per_type_encoder_f SEQUENCE_encode_uper; -per_type_decoder_f SEQUENCE_decode_aper; -per_type_encoder_f SEQUENCE_encode_aper; -asn_random_fill_f SEQUENCE_random_fill; -extern asn_TYPE_operation_t asn_OP_SEQUENCE; - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE_OF.c b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE_OF.c deleted file mode 100644 index 10f18cf..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE_OF.c +++ /dev/null @@ -1,358 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The DER encoder of the SEQUENCE OF type. - */ -asn_enc_rval_t -SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - asn_enc_rval_t erval = {0,0,0}; - int edx; - - ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - computed_size += encoding_size; - if(!cb) { - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - cb, app_key); - if(erval.encoded == -1) - return erval; - encoding_size += erval.encoded; - } - - if(computed_size != (size_t)encoding_size) { - /* - * Encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - erval.structure_ptr = 0; - erval.failed_type = 0; - } - - return erval; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 - : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_enc_rval_t -SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - const asn_TYPE_member_t *elm = td->elements; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, - po); - if(er.encoded == -1) ASN__ENCODE_FAILED; - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - ASN__ENCODED_OK(er); -} - -asn_enc_rval_t -SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - asn_TYPE_member_t *elm = td->elements; - int seq; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = (list->count < ct->lower_bound - || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", - ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) - ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) - ASN__ENCODE_FAILED; - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ -/* if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; -*/ - if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) - ASN__ENCODE_FAILED; - } - - for(seq = -1; seq < list->count;) { - ssize_t mayEncode; - if(seq < 0) seq = 0; - if(ct && ct->effective_bits >= 0) { - mayEncode = list->count; - } else { - mayEncode = aper_put_length(po, -1, list->count - seq); - if(mayEncode < 0) ASN__ENCODE_FAILED; - } - - while(mayEncode--) { - void *memb_ptr = list->array[seq++]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->aper_encoder(elm->type, - elm->encoding_constraints.per_constraints, memb_ptr, po); - if(er.encoded == -1) - ASN__ENCODE_FAILED; - } - } - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); - const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); - ssize_t idx; - - if(a && b) { - ssize_t common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, a->array[idx], b->array[idx]); - if(ret) return ret; - } - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { - SEQUENCE_OF_free, - SEQUENCE_OF_print, - SEQUENCE_OF_compare, - SEQUENCE_OF_decode_ber, - SEQUENCE_OF_encode_der, - SEQUENCE_OF_decode_xer, - SEQUENCE_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ - SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ - SEQUENCE_OF_encode_uper, - SEQUENCE_OF_decode_aper, - SEQUENCE_OF_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE_OF.h b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE_OF.h deleted file mode 100644 index 6857f0f..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SEQUENCE_OF.h +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SEQUENCE_OF_H_ -#define _CONSTR_SEQUENCE_OF_H_ - -#include -#include /* Implemented using SET OF */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A set specialized functions dealing with the SEQUENCE OF type. - * Generally implemented using SET OF. - */ -asn_struct_compare_f SEQUENCE_OF_compare; -der_type_encoder_f SEQUENCE_OF_encode_der; -xer_type_encoder_f SEQUENCE_OF_encode_xer; -per_type_encoder_f SEQUENCE_OF_encode_uper; -per_type_encoder_f SEQUENCE_OF_encode_aper; -extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; - -#define SEQUENCE_OF_free SET_OF_free -#define SEQUENCE_OF_print SET_OF_print -#define SEQUENCE_OF_constraint SET_OF_constraint -#define SEQUENCE_OF_decode_ber SET_OF_decode_ber -#define SEQUENCE_OF_decode_xer SET_OF_decode_xer -#define SEQUENCE_OF_decode_oer SET_OF_decode_oer -#define SEQUENCE_OF_encode_oer SET_OF_encode_oer -#define SEQUENCE_OF_decode_uper SET_OF_decode_uper -#define SEQUENCE_OF_decode_aper SET_OF_decode_aper -#define SEQUENCE_OF_random_fill SET_OF_random_fill - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SET_OF_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SET_OF.c b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SET_OF.c deleted file mode 100644 index bf1dc27..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SET_OF.c +++ /dev/null @@ -1,1441 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * The decoder of the SET OF type. - */ -asn_dec_rval_t -SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as SET OF", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - ASN_DEBUG("Structure consumes %ld bytes, " - "buffer %ld", (long)ctx->left, (long)size); - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next item. - */ - for(;; ctx->step = 0) { - ssize_t tag_len; /* Length of TLV's T */ - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - - if(ctx->left == 0) { - ASN_DEBUG("End of SET OF %s", td->name); - /* - * No more things to decode. - * Exit out of here. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Found the terminator of the - * indefinite length structure. - */ - break; - } - } - - /* Outmost tag may be unknown and cannot be fetched/compared */ - if(elm->tag != (ber_tlv_tag_t)-1) { - if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { - /* - * The new list member of expected type has arrived. - */ - } else { - ASN_DEBUG("Unexpected tag %s fixed SET OF %s", - ber_tlv_tag_string(tlv_tag), td->name); - ASN_DEBUG("%s SET OF has tag %s", - td->name, ber_tlv_tag_string(elm->tag)); - RETURN(RC_FAIL); - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, - elm->type, &ctx->ptr, ptr, LEFT, 0); - ASN_DEBUG("In %s SET OF %s code %d consumed %d", - td->name, elm->type->name, - rval.code, (int)rval.consumed); - switch(rval.code) { - case RC_OK: - { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - else - ctx->ptr = 0; - } - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - /* Fall through */ - case RC_FAIL: /* Fatal error */ - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all list members) */ - - NEXT_PHASE(ctx); - case 2: - /* - * Read in all "end of content" TLVs. - */ - while(ctx->left < 0) { - if(LEFT < 2) { - if(LEFT > 0 && ((const char *)ptr)[0] != 0) { - /* Unexpected tag */ - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } - if(((const char *)ptr)[0] == 0 - && ((const char *)ptr)[1] == 0) { - ADVANCE(2); - ctx->left++; - } else { - RETURN(RC_FAIL); - } - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - -/* - * Internally visible buffer holding a single encoded element. - */ -struct _el_buffer { - uint8_t *buf; - size_t length; - size_t allocated_size; - unsigned bits_unused; -}; -/* Append bytes to the above structure */ -static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { - struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; - - if(el_buf->length + size > el_buf->allocated_size) { - size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; - void *p; - - do { - new_size <<= 2; - } while(el_buf->length + size > new_size); - - p = REALLOC(el_buf->buf, new_size); - if(p) { - el_buf->buf = p; - el_buf->allocated_size = new_size; - } else { - return -1; - } - } - - memcpy(el_buf->buf + el_buf->length, buffer, size); - - el_buf->length += size; - return 0; -} - -static void assert_unused_bits(const struct _el_buffer* p) { - if(p->length) { - assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); - } else { - assert(p->bits_unused == 0); - } -} - -static int _el_buf_cmp(const void *ap, const void *bp) { - const struct _el_buffer *a = (const struct _el_buffer *)ap; - const struct _el_buffer *b = (const struct _el_buffer *)bp; - size_t common_len; - int ret = 0; - - if(a->length < b->length) - common_len = a->length; - else - common_len = b->length; - - if (a->buf && b->buf) { - ret = memcmp(a->buf, b->buf, common_len); - } - if(ret == 0) { - if(a->length < b->length) - ret = -1; - else if(a->length > b->length) - ret = 1; - /* Ignore unused bits. */ - assert_unused_bits(a); - assert_unused_bits(b); - } - - return ret; -} - -static void -SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { - size_t i; - - for(i = 0; i < count; i++) { - FREEMEM(el_buf[i].buf); - } - - FREEMEM(el_buf); -} - -enum SET_OF__encode_method { - SOES_DER, /* Distinguished Encoding Rules */ - SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ -}; - -static struct _el_buffer * -SET_OF__encode_sorted(const asn_TYPE_member_t *elm, - const asn_anonymous_set_ *list, - enum SET_OF__encode_method method) { - struct _el_buffer *encoded_els; - int edx; - - encoded_els = - (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); - if(encoded_els == NULL) { - return NULL; - } - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - const void *memb_ptr = list->array[edx]; - struct _el_buffer *encoding_el = &encoded_els[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) break; - - /* - * Encode the member into the prepared space. - */ - switch(method) { - case SOES_DER: - erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, - _el_addbytes, encoding_el); - break; - case SOES_CUPER: - erval = uper_encode(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, _el_addbytes, encoding_el); - if(erval.encoded != -1) { - size_t extra_bits = erval.encoded % 8; - assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); - encoding_el->bits_unused = (8 - extra_bits) & 0x7; - } - break; - default: - assert(!"Unreachable"); - break; - } - if(erval.encoded < 0) break; - } - - if(edx == list->count) { - /* - * Sort the encoded elements according to their encoding. - */ - qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); - - return encoded_els; - } else { - SET_OF__encode_sorted_free(encoded_els, edx); - return NULL; - } -} - - -/* - * The DER encoder of the SET OF type. - */ -asn_enc_rval_t -SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - struct _el_buffer *encoded_els; - int edx; - - ASN_DEBUG("Estimating size for SET OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) ASN__ENCODE_FAILED; - - erval = - elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); - if(erval.encoded == -1) return erval; - computed_size += erval.encoded; - } - - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = - der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - if(encoding_size < 0) { - ASN__ENCODE_FAILED; - } - computed_size += encoding_size; - - if(!cb || list->count == 0) { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of %s SET OF", td->name); - - /* - * DER mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the - * encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); - - /* - * Report encoded elements to the application. - * Dispose of temporary sorted members table. - */ - for(edx = 0; edx < list->count; edx++) { - struct _el_buffer *encoded_el = &encoded_els[edx]; - /* Report encoded chunks to the application */ - if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { - break; - } else { - encoding_size += encoded_el->length; - } - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if(edx == list->count) { - asn_enc_rval_t erval = {0,0,0}; - assert(computed_size == (size_t)encoding_size); - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } else { - ASN__ENCODE_FAILED; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *element = td->elements; - const char *elm_tag; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* Which tag is expected for the downstream */ - if(specs->as_XMLValueList) { - elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; - } else { - elm_tag = (*element->name) - ? element->name : element->type->xml_tag; - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - */ - for(; ctx->phase <= 2;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Go inside the inner member of a set. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval = {RC_OK, 0}; - - /* Invoke the inner type decoder, m.b. multiple times */ - ASN_DEBUG("XER/SET OF element [%s]", elm_tag); - tmprval = element->type->op->xer_decoder(opt_codec_ctx, - element->type, &ctx->ptr, elm_tag, - buf_ptr, size); - if(tmprval.code == RC_OK) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - ctx->ptr = 0; - XER_ADVANCE(tmprval.consumed); - } else { - XER_ADVANCE(tmprval.consumed); - RETURN(tmprval.code); - } - ctx->phase = 1; /* Back to body processing */ - ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, - buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", - tcv, ctx->phase, xml_tag); - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - /* No more things to decode */ - XER_ADVANCE(ch_size); - ctx->phase = 3; /* Phase out */ - RETURN(RC_OK); - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); - if(ctx->phase == 1) { - /* - * Process a single possible member. - */ - ctx->phase = 2; - continue; - } - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SET OF"); - break; - } - - ctx->phase = 3; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - - - -typedef struct xer_tmp_enc_s { - void *buffer; - size_t offset; - size_t size; -} xer_tmp_enc_t; -static int -SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { - xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; - if(t->offset + size >= t->size) { - size_t newsize = (t->size << 2) + size; - void *p = REALLOC(t->buffer, newsize); - if(!p) return -1; - t->buffer = p; - t->size = newsize; - } - memcpy((char *)t->buffer + t->offset, buffer, size); - t->offset += size; - return 0; -} -static int -SET_OF_xer_order(const void *aptr, const void *bptr) { - const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; - const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; - size_t minlen = a->offset; - int ret; - if(b->offset < minlen) minlen = b->offset; - /* Well-formed UTF-8 has this nice lexicographical property... */ - ret = memcmp(a->buffer, b->buffer, minlen); - if(ret != 0) return ret; - if(a->offset == b->offset) - return 0; - if(a->offset == minlen) - return -1; - return 1; -} - - -asn_enc_rval_t -SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - xer_tmp_enc_t *encs = 0; - size_t encs_count = 0; - void *original_app_key = app_key; - asn_app_consume_bytes_f *original_cb = cb; - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - if(xcan) { - encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); - if(!encs) ASN__ENCODE_FAILED; - cb = SET_OF_encode_xer_callback; - } - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(encs) { - memset(&encs[encs_count], 0, sizeof(encs[0])); - app_key = &encs[encs_count]; - encs_count++; - } - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - if(!xcan && specs->as_XMLValueList == 1) - ASN__TEXT_INDENT(1, ilevel + 1); - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + (specs->as_XMLValueList != 2), - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - if(encs) { - xer_tmp_enc_t *enc = encs; - xer_tmp_enc_t *end = encs + encs_count; - ssize_t control_size = 0; - - er.encoded = 0; - cb = original_cb; - app_key = original_app_key; - qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); - - for(; enc < end; enc++) { - ASN__CALLBACK(enc->buffer, enc->offset); - FREEMEM(enc->buffer); - enc->buffer = 0; - control_size += enc->offset; - } - assert(control_size == er.encoded); - } - - goto cleanup; -cb_failed: - ASN__ENCODE_FAILED; -cleanup: - if(encs) { - size_t n; - for(n = 0; n < encs_count; n++) { - FREEMEM(encs[n].buffer); - } - FREEMEM(encs); - } - ASN__ENCODED_OK(er); -} - -int -SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int ret; - int i; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - _i_INDENT(1); - - ret = elm->type->op->print_struct(elm->type, memb_ptr, - ilevel + 1, cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - const asn_SET_OF_specifics_t *specs; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - asn_struct_ctx_t *ctx; /* Decoder context */ - int i; - - /* - * Could not use set_of_empty() because of (*free) - * incompatibility. - */ - for(i = 0; i < list->count; i++) { - void *memb_ptr = list->array[i]; - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } - list->count = 0; /* No meaningful elements left */ - - asn_set_empty(list); /* Remove (list->array) */ - - specs = (const asn_SET_OF_specifics_t *)td->specifics; - ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); - if(ctx->ptr) { - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } - } -} - -int -SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - asn_constr_check_f *constr; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int i; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - constr = elm->encoding_constraints.general_constraints; - if(!constr) constr = elm->type->encoding_constraints.general_constraints; - - /* - * Iterate over the members of an array. - * Validate each in turn, until one fails. - */ - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - int ret; - - if(!memb_ptr) continue; - - ret = constr(elm->type, memb_ptr, ctfailcb, app_key); - if(ret) return ret; - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = per_get_few_bits(pd, ct->effective_bits); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = uper_get_length(pd, -1, 0, &repeat); - ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", - nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) { - if(rv.consumed == 0 && nelems > 200) { - /* Protect from SET OF NULL compression bombs. */ - ASN__DECODE_FAILED; - } - continue; - } - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -asn_enc_rval_t -SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - const asn_TYPE_member_t *elm = td->elements; - struct _el_buffer *encoded_els; - asn_enc_rval_t er = {0,0,0}; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - - list = _A_CSET_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - - /* - * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - const struct _el_buffer *el = &encoded_els[edx]; - if(asn_put_many_bits(po, el->buf, - (8 * el->length) - el->bits_unused) < 0) { - break; - } - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if((ssize_t)encoded_edx == list->count) { - ASN__ENCODED_OK(er); - } else { - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, - ct ? ct->effective_bits : -1, &repeat); - ASN_DEBUG("Got to decode %d elements (eff %d)", - (int)nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) - continue; - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -struct comparable_ptr { - const asn_TYPE_descriptor_t *td; - const void *sptr; -}; - -static int -SET_OF__compare_cb(const void *aptr, const void *bptr) { - const struct comparable_ptr *a = aptr; - const struct comparable_ptr *b = bptr; - assert(a->td == b->td); - return a->td->op->compare_struct(a->td, a->sptr, b->sptr); -} - -int -SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); - const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); - - if(a && b) { - struct comparable_ptr *asorted; - struct comparable_ptr *bsorted; - ssize_t common_length; - ssize_t idx; - - if(a->count == 0) { - if(b->count) return -1; - return 0; - } else if(b->count == 0) { - return 1; - } - - asorted = MALLOC(a->count * sizeof(asorted[0])); - bsorted = MALLOC(b->count * sizeof(bsorted[0])); - if(!asorted || !bsorted) { - FREEMEM(asorted); - FREEMEM(bsorted); - return -1; - } - - for(idx = 0; idx < a->count; idx++) { - asorted[idx].td = td->elements->type; - asorted[idx].sptr = a->array[idx]; - } - - for(idx = 0; idx < b->count; idx++) { - bsorted[idx].td = td->elements->type; - bsorted[idx].sptr = b->array[idx]; - } - - qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); - qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); - - common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); - if(ret) { - FREEMEM(asorted); - FREEMEM(bsorted); - return ret; - } - } - - FREEMEM(asorted); - FREEMEM(bsorted); - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SET_OF = { - SET_OF_free, - SET_OF_print, - SET_OF_compare, - SET_OF_decode_ber, - SET_OF_encode_der, - SET_OF_decode_xer, - SET_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SET_OF_decode_oer, - SET_OF_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SET_OF_decode_uper, - SET_OF_encode_uper, - SET_OF_decode_aper, - 0, /* SET_OF_encode_aper */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - SET_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_SET_OF_specifics_t *specs = - (const asn_SET_OF_specifics_t *)td->specifics; - asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm = td->elements; - void *st = *sptr; - long max_elements = 5; - long slb = 0; /* Lower size bound */ - long sub = 0; /* Upper size bound */ - size_t rnd_len; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) { - return result_failed; - } - } - - switch(asn_random_between(0, 6)) { - case 0: max_elements = 0; break; - case 1: max_elements = 1; break; - case 2: max_elements = 5; break; - case 3: max_elements = max_length; break; - case 4: max_elements = max_length / 2; break; - case 5: max_elements = max_length / 4; break; - default: break; - } - sub = slb + max_elements; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_SEMI_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->lower_bound + max_elements; - } else if(pc->flags & APC_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->upper_bound; - if(sub - slb > max_elements) sub = slb + max_elements; - } - } - - /* Bias towards edges of allowed space */ - switch(asn_random_between(-1, 4)) { - default: - case -1: - /* Prepare lengths somewhat outside of constrained range. */ - if(constraints->per_constraints - && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { - switch(asn_random_between(0, 5)) { - default: - case 0: - rnd_len = 0; - break; - case 1: - if(slb > 0) { - rnd_len = slb - 1; - } else { - rnd_len = 0; - } - break; - case 2: - rnd_len = asn_random_between(0, slb); - break; - case 3: - if(sub < (ssize_t)max_length) { - rnd_len = sub + 1; - } else { - rnd_len = max_length; - } - break; - case 4: - if(sub < (ssize_t)max_length) { - rnd_len = asn_random_between(sub + 1, max_length); - } else { - rnd_len = max_length; - } - break; - case 5: - rnd_len = max_length; - break; - } - break; - } - /* Fall through */ - case 0: - rnd_len = asn_random_between(slb, sub); - break; - case 1: - if(slb < sub) { - rnd_len = asn_random_between(slb + 1, sub); - break; - } - /* Fall through */ - case 2: - rnd_len = asn_random_between(slb, slb); - break; - case 3: - if(slb < sub) { - rnd_len = asn_random_between(slb, sub - 1); - break; - } - /* Fall through */ - case 4: - rnd_len = asn_random_between(sub, sub); - break; - } - - for(; rnd_len > 0; rnd_len--) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - void *ptr = 0; - asn_random_fill_result_t tmpres = elm->type->op->random_fill( - elm->type, &ptr, &elm->encoding_constraints, - (max_length > res_ok.length ? max_length - res_ok.length : 0) - / rnd_len); - switch(tmpres.code) { - case ARFILL_OK: - ASN_SET_ADD(list, ptr); - res_ok.length += tmpres.length; - break; - case ARFILL_SKIPPED: - break; - case ARFILL_FAILED: - assert(ptr == 0); - return tmpres; - } - } - - return res_ok; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SET_OF.h b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SET_OF.h deleted file mode 100644 index 7681062..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_SET_OF.h +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef CONSTR_SET_OF_H -#define CONSTR_SET_OF_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct asn_SET_OF_specifics_s { - /* - * Target structure description. - */ - unsigned struct_size; /* Size of the target structure. */ - unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - /* XER-specific stuff */ - int as_XMLValueList; /* The member type must be encoded like this */ -} asn_SET_OF_specifics_t; - -/* - * A set specialized functions dealing with the SET OF type. - */ -asn_struct_free_f SET_OF_free; -asn_struct_print_f SET_OF_print; -asn_struct_compare_f SET_OF_compare; -asn_constr_check_f SET_OF_constraint; -ber_type_decoder_f SET_OF_decode_ber; -der_type_encoder_f SET_OF_encode_der; -xer_type_decoder_f SET_OF_decode_xer; -xer_type_encoder_f SET_OF_encode_xer; -oer_type_decoder_f SET_OF_decode_oer; -oer_type_encoder_f SET_OF_encode_oer; -per_type_decoder_f SET_OF_decode_uper; -per_type_encoder_f SET_OF_encode_uper; -per_type_decoder_f SET_OF_decode_aper; -per_type_encoder_f SET_OF_encode_aper; -asn_random_fill_f SET_OF_random_fill; -extern asn_TYPE_operation_t asn_OP_SET_OF; - -#ifdef __cplusplus -} -#endif - -#endif /* CONSTR_SET_OF_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_TYPE.c b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_TYPE.c deleted file mode 100644 index aefaefd..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_TYPE.c +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Version of the ASN.1 infrastructure shipped with compiler. - */ -int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } - -static asn_app_consume_bytes_f _print2fp; - -/* - * Return the outmost tag of the type. - */ -ber_tlv_tag_t -asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { - - if(tag_mode) - return tag; - - if(type_descriptor->tags_count) - return type_descriptor->tags[0]; - - return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); -} - -/* - * Print the target language's structure in human readable form. - */ -int -asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, - const void *struct_ptr) { - if(!stream) stream = stdout; - if(!td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - /* Invoke type-specific printer */ - if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { - return -1; - } - - /* Terminate the output */ - if(_print2fp("\n", 1, stream)) { - return -1; - } - - return fflush(stream); -} - -/* Dump the data into the specified stdio stream */ -static int -_print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - - -/* - * Some compilers do not support variable args macros. - * This function is a replacement of ASN_DEBUG() macro. - */ -void ASN_DEBUG_f(const char *fmt, ...); -void ASN_DEBUG_f(const char *fmt, ...) { - va_list ap; - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_TYPE.h b/3rdparty/E2SM-gNB-X2-V4.0.1/constr_TYPE.h deleted file mode 100644 index d80dea5..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constr_TYPE.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This file contains the declaration structure called "ASN.1 Type Definition", - * which holds all information necessary for encoding and decoding routines. - * This structure even contains pointer to these encoding and decoding routines - * for each defined ASN.1 type. - */ -#ifndef _CONSTR_TYPE_H_ -#define _CONSTR_TYPE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ -struct asn_TYPE_member_s; /* Forward declaration */ - -/* - * This type provides the context information for various ASN.1 routines, - * primarily ones doing decoding. A member _asn_ctx of this type must be - * included into certain target language's structures, such as compound types. - */ -typedef struct asn_struct_ctx_s { - short phase; /* Decoding phase */ - short step; /* Elementary step of a phase */ - int context; /* Other context information */ - void *ptr; /* Decoder-specific stuff (stack elements) */ - ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ -} asn_struct_ctx_t; - -#include /* Basic Encoding Rules decoder */ -#include /* Distinguished Encoding Rules encoder */ -#include /* Decoder of XER (XML, text) */ -#include /* Encoder into XER (XML, text) */ -#include /* Packet Encoding Rules decoder */ -#include /* Packet Encoding Rules encoder */ -#include /* Subtype constraints support */ -#include /* Random structures support */ - -#ifdef ASN_DISABLE_OER_SUPPORT -typedef void (oer_type_decoder_f)(void); -typedef void (oer_type_encoder_f)(void); -typedef void asn_oer_constraints_t; -#else -#include /* Octet Encoding Rules encoder */ -#include /* Octet Encoding Rules encoder */ -#endif - -/* - * Free the structure according to its specification. - * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. - * Do not use directly. - */ -enum asn_struct_free_method { - ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ - ASFM_FREE_UNDERLYING, /* free underlying members */ - ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ -}; -typedef void (asn_struct_free_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, enum asn_struct_free_method); - -/* - * Free the structure including freeing the memory pointed to by ptr itself. - */ -#define ASN_STRUCT_FREE(asn_DEF, ptr) \ - (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) - -/* - * Free the memory used by the members of the structure without freeing the - * the structure pointer itself. - * ZERO-OUT the structure to the safe clean state. - * (Retaining the pointer may be useful in case the structure is allocated - * statically or arranged on the stack, yet its elements are dynamic.) - */ -#define ASN_STRUCT_RESET(asn_DEF, ptr) \ - (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) - -/* - * Free memory used by the members of the structure without freeing - * the structure pointer itself. - * (Retaining the pointer may be useful in case the structure is allocated - * statically or arranged on the stack, yet its elements are dynamic.) - * AVOID using it in the application code; - * Use a safer ASN_STRUCT_RESET() instead. - */ -#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ - (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) - -/* - * Print the structure according to its specification. - */ -typedef int(asn_struct_print_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, - int level, /* Indentation level */ - asn_app_consume_bytes_f *callback, void *app_key); - -/* - * Compare two structs between each other. - * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", - * and =0 if "equal to", for some type-specific, stable definition of - * "smaller", "greater" and "equal to". - */ -typedef int (asn_struct_compare_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_A, - const void *struct_B); - -/* - * Return the outmost tag of the type. - * If the type is untagged CHOICE, the dynamic operation is performed. - * NOTE: This function pointer type is only useful internally. - * Do not use it in your application. - */ -typedef ber_tlv_tag_t (asn_outmost_tag_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); -/* The instance of the above function type; used internally. */ -asn_outmost_tag_f asn_TYPE_outmost_tag; - -/* - * Fetch the desired type of the Open Type based on the - * Information Object Set driven constraints. - */ -typedef struct asn_type_selector_result_s { - const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ - unsigned presence_index; /* Associated choice variant. */ -} asn_type_selector_result_t; -typedef asn_type_selector_result_t(asn_type_selector_f)( - const struct asn_TYPE_descriptor_s *parent_type_descriptor, - const void *parent_structure_ptr); - -/* - * Generalized functions for dealing with the speciic type. - * May be directly invoked by applications. - */ -typedef struct asn_TYPE_operation_s { - asn_struct_free_f *free_struct; /* Free the structure */ - asn_struct_print_f *print_struct; /* Human readable output */ - asn_struct_compare_f *compare_struct; /* Compare two structures */ - ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ - der_type_encoder_f *der_encoder; /* Canonical DER encoder */ - xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ - xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ - oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ - oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ - per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ - per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ - per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ - per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ - asn_random_fill_f *random_fill; /* Initialize with a random value */ - asn_outmost_tag_f *outmost_tag; /* */ -} asn_TYPE_operation_t; - -/* - * A constraints tuple specifying both the OER and PER constraints. - */ -typedef struct asn_encoding_constraints_s { - const struct asn_oer_constraints_s *oer_constraints; - const struct asn_per_constraints_s *per_constraints; - asn_constr_check_f *general_constraints; -} asn_encoding_constraints_t; - -/* - * The definitive description of the destination language's structure. - */ -typedef struct asn_TYPE_descriptor_s { - const char *name; /* A name of the ASN.1 type. "" in some cases. */ - const char *xml_tag; /* Name used in XML tag */ - - /* - * Generalized functions for dealing with the specific type. - * May be directly invoked by applications. - */ - asn_TYPE_operation_t *op; - - /*********************************************************************** - * Internally useful members. Not to be used by applications directly. * - **********************************************************************/ - - /* - * Tags that are expected to occur. - */ - const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ - unsigned tags_count; /* Number of tags which are expected */ - const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ - unsigned all_tags_count; /* Number of tags */ - - /* OER, PER, and general constraints */ - asn_encoding_constraints_t encoding_constraints; - - /* - * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). - */ - struct asn_TYPE_member_s *elements; - unsigned elements_count; - - /* - * Additional information describing the type, used by appropriate - * functions above. - */ - const void *specifics; -} asn_TYPE_descriptor_t; - -/* - * This type describes an element of the constructed type, - * i.e. SEQUENCE, SET, CHOICE, etc. - */ - enum asn_TYPE_flags_e { - ATF_NOFLAGS, - ATF_POINTER = 0x01, /* Represented by the pointer */ - ATF_OPEN_TYPE = 0x02, /* Open Type */ - ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ - }; -typedef struct asn_TYPE_member_s { - enum asn_TYPE_flags_e flags; /* Element's presentation flags */ - unsigned optional; /* Following optional members, including current */ - unsigned memb_offset; /* Offset of the element */ - ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ - int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ - asn_TYPE_descriptor_t *type; /* Member type descriptor */ - asn_type_selector_f *type_selector; /* IoS runtime type selector */ - asn_encoding_constraints_t encoding_constraints; - int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ - int (*default_value_set)(void **sptr); /* Set DEFAULT */ - const char *name; /* ASN.1 identifier of the element */ -} asn_TYPE_member_t; - -/* - * BER tag to element number mapping. - */ -typedef struct asn_TYPE_tag2member_s { - ber_tlv_tag_t el_tag; /* Outmost tag of the member */ - unsigned el_no; /* Index of the associated member, base 0 */ - int toff_first; /* First occurence of the el_tag, relative */ - int toff_last; /* Last occurence of the el_tag, relative */ -} asn_TYPE_tag2member_t; - -/* - * This function prints out the contents of the target language's structure - * (struct_ptr) into the file pointer (stream) in human readable form. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem dumping the structure. - * (See also xer_fprint() in xer_encoder.h) - */ -int asn_fprint(FILE *stream, /* Destination stream descriptor */ - const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ - const void *struct_ptr); /* Structure to be printed */ - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_TYPE_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constraints.c b/3rdparty/E2SM-gNB-X2-V4.0.1/constraints.c deleted file mode 100644 index df3c6c1..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constraints.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include - -int -asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Nothing to check */ - return 0; -} - -int -asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Unknown how to check */ - return 0; -} - -struct errbufDesc { - const asn_TYPE_descriptor_t *failed_type; - const void *failed_struct_ptr; - char *errbuf; - size_t errlen; -}; - -static void -_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, - const char *fmt, ...) { - struct errbufDesc *arg = key; - va_list ap; - ssize_t vlen; - ssize_t maxlen; - - arg->failed_type = td; - arg->failed_struct_ptr = sptr; - - maxlen = arg->errlen; - if(maxlen <= 0) - return; - - va_start(ap, fmt); - vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); - va_end(ap); - if(vlen >= maxlen) { - arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ - arg->errlen = maxlen - 1; /* Not counting termination */ - return; - } else if(vlen >= 0) { - arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ - arg->errlen = vlen; /* Not counting termination */ - } else { - /* - * The libc on this system is broken. - */ - vlen = sizeof("") - 1; - maxlen--; - arg->errlen = vlen < maxlen ? vlen : maxlen; - memcpy(arg->errbuf, "", arg->errlen); - arg->errbuf[arg->errlen] = 0; - } - - return; -} - -int -asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, char *errbuf, size_t *errlen) { - struct errbufDesc arg; - int ret; - - arg.failed_type = 0; - arg.failed_struct_ptr = 0; - arg.errbuf = errbuf; - arg.errlen = errlen ? *errlen : 0; - - ret = type_descriptor->encoding_constraints.general_constraints( - type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); - if(ret == -1 && errlen) *errlen = arg.errlen; - - return ret; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/constraints.h b/3rdparty/E2SM-gNB-X2-V4.0.1/constraints.h deleted file mode 100644 index 0bd86a9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/constraints.h +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN1_CONSTRAINTS_VALIDATOR_H -#define ASN1_CONSTRAINTS_VALIDATOR_H - -#include /* Platform-dependent types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Validate the structure according to the ASN.1 constraints. - * If errbuf and errlen are given, they shall be pointing to the appropriate - * buffer space and its length before calling this function. Alternatively, - * they could be passed as NULL's. If constraints validation fails, - * errlen will contain the actual number of bytes taken from the errbuf - * to encode an error message (properly 0-terminated). - * - * RETURN VALUES: - * This function returns 0 in case all ASN.1 constraints are met - * and -1 if one or more constraints were failed. - */ -int asn_check_constraints( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Target language's structure */ - char *errbuf, /* Returned error description */ - size_t *errlen /* Length of the error description */ -); - - -/* - * Generic type for constraint checking callback, - * associated with every type descriptor. - */ -typedef int(asn_constr_check_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, - asn_app_constraint_failed_f *optional_callback, /* Log the error */ - void *optional_app_key /* Opaque key passed to a callback */ -); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ -asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ - -/* - * Invoke the callback with a complete error message. - */ -#define ASN__CTFAIL if(ctfailcb) ctfailcb - -#ifdef __cplusplus -} -#endif - -#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/der_encoder.c b/3rdparty/E2SM-gNB-X2-V4.0.1/der_encoder.c deleted file mode 100644 index 2c6a6f7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/der_encoder.c +++ /dev/null @@ -1,194 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, int constructed); - -/* - * The DER encoder of any type. - */ -asn_enc_rval_t -der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - ASN_DEBUG("DER encoder invoked for %s", - type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->op->der_encoder( - type_descriptor, struct_ptr, /* Pointer to the destination structure */ - 0, 0, consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for der_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the der_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - ec = type_descriptor->op->der_encoder(type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - 0, 0, encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - return ec; -} - - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t -der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, - int tag_mode, int last_tag_form, - ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ - asn_app_consume_bytes_f *cb, void *app_key) { -#define ASN1_DER_MAX_TAGS_COUNT 4 - ber_tlv_tag_t - tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; - ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; - const ber_tlv_tag_t *tags; /* Copy of tags stream */ - int tags_count; /* Number of tags */ - size_t overall_length; - int i; - - ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", - sd->name, tag_mode, sd->tags_count, - ber_tlv_tag_string(tag), - tag_mode - ?(sd->tags_count+1 - -((tag_mode == -1) && sd->tags_count)) - :sd->tags_count - ); - - if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { - ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); - return -1; - } - - if(tag_mode) { - /* - * Instead of doing shaman dance like we do in ber_check_tags(), - * allocate a small array on the stack - * and initialize it appropriately. - */ - int stag_offset; - ber_tlv_tag_t *tags_buf = tags_buf_scratch; - tags_count = sd->tags_count - + 1 /* EXPLICIT or IMPLICIT tag is given */ - - ((tag_mode == -1) && sd->tags_count); - /* Copy tags over */ - tags_buf[0] = tag; - stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); - for(i = 1; i < tags_count; i++) - tags_buf[i] = sd->tags[i + stag_offset]; - tags = tags_buf; - } else { - tags = sd->tags; - tags_count = sd->tags_count; - } - - /* No tags to write */ - if(tags_count == 0) - return 0; - - /* - * Array of tags is initialized. - * Now, compute the size of the TLV pairs, from right to left. - */ - overall_length = struct_length; - for(i = tags_count - 1; i >= 0; --i) { - lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); - if(lens[i] == -1) return -1; - overall_length += lens[i]; - lens[i] = overall_length - lens[i]; - } - - if(!cb) return overall_length - struct_length; - - ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, - tags_count); - - /* - * Encode the TL sequence for real. - */ - for(i = 0; i < tags_count; i++) { - ssize_t len; - int _constr; - - /* Check if this tag happens to be constructed */ - _constr = (last_tag_form || i < (tags_count - 1)); - - len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); - if(len == -1) return -1; - } - - return overall_length - struct_length; -} - -static ssize_t -der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, - int constructed) { - uint8_t buf[32]; - size_t size = 0; - int buf_size = cb?sizeof(buf):0; - ssize_t tmp; - - /* Serialize tag (T from TLV) into possibly zero-length buffer */ - tmp = ber_tlv_tag_serialize(tag, buf, buf_size); - if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; - size += tmp; - - /* Serialize length (L from TLV) into possibly zero-length buffer */ - tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); - if(tmp == -1) return -1; - size += tmp; - - if(size > sizeof(buf)) - return -1; - - /* - * If callback is specified, invoke it, and check its return value. - */ - if(cb) { - if(constructed) *buf |= 0x20; - if(cb(buf, size, app_key) < 0) - return -1; - } - - return size; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/der_encoder.h b/3rdparty/E2SM-gNB-X2-V4.0.1/der_encoder.h deleted file mode 100644 index e93944e..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/der_encoder.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _DER_ENCODER_H_ -#define _DER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The DER encoder of any type. May be invoked by the application. - * Produces DER- and BER-compliant encoding. (DER is a subset of BER). - * - * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data - * produced by der_encode(). - */ -asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* A variant of der_encode() which encodes data into the pre-allocated buffer */ -asn_enc_rval_t der_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -); - -/* - * Type of the generic DER encoder. - */ -typedef asn_enc_rval_t(der_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, - size_t struct_length, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {0,!0}: prim, constructed */ - ber_tlv_tag_t tag, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _DER_ENCODER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_decoder.c b/3rdparty/E2SM-gNB-X2-V4.0.1/per_decoder.c deleted file mode 100644 index 8a3e39d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_decoder.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -/* - * Decode a "Production of a complete encoding", X.691#10.1. - * The complete encoding contains at least one byte, and is an integral - * multiple of 8 bytes. - */ -asn_dec_rval_t -uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -uper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->uper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %ld, counted %ld", - (long)rval.consumed, (long)pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - -asn_dec_rval_t -aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -aper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->aper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %zu, counted %zu", - rval.consumed, pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_decoder.h b/3rdparty/E2SM-gNB-X2-V4.0.1/per_decoder.h deleted file mode 100644 index eea474a..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_decoder.h +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_DECODER_H_ -#define _PER_DECODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. - * On success, this call always returns (.consumed >= 1), as per #11.1.3. - */ -asn_dec_rval_t uper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t uper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of the input data buffer, in bytes */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ -); - -/* - * Aligned PER decoder of a "complete encoding" as per X.691#10.1. - * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. - */ -asn_dec_rval_t aper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - -/* - * Aligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t aper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of data buffer */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ - ); - -/* - * Type of the type-specific PER decoder function. - */ -typedef asn_dec_rval_t(per_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, void **struct_ptr, - asn_per_data_t *per_data); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_DECODER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_encoder.c b/3rdparty/E2SM-gNB-X2-V4.0.1/per_encoder.c deleted file mode 100644 index a35e1f0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_encoder.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include - -static int _uper_encode_flush_outp(asn_per_outp_t *po); - -static int -ignore_output(const void *data, size_t size, void *app_key) { - (void)data; - (void)size; - (void)app_key; - return 0; -} - -asn_enc_rval_t -uper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->uper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb ? cb : ignore_output; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->uper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; - } - - return er; -} - -/* - * Argument type and callback necessary for uper_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -asn_enc_rval_t -uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); - - return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -typedef struct enc_dyn_arg { - void *buffer; - size_t length; - size_t allocated; -} enc_dyn_arg; -static int -encode_dyn_cb(const void *buffer, size_t size, void *key) { - enc_dyn_arg *arg = key; - if(arg->length + size >= arg->allocated) { - size_t new_size = arg->allocated ? arg->allocated : 8; - void *p; - - do { - new_size <<= 2; - } while(arg->length + size >= new_size); - - p = REALLOC(arg->buffer, new_size); - if(!p) { - FREEMEM(arg->buffer); - memset(arg, 0, sizeof(*arg)); - return -1; - } - arg->buffer = p; - arg->allocated = new_size; - } - memcpy(((char *)arg->buffer) + arg->length, buffer, size); - arg->length += size; - return 0; -} -ssize_t -uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -/* - * Internally useful functions. - */ - -/* Flush partially filled buffer */ -static int -_uper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); -} - -asn_enc_rval_t -aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); - - return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -ssize_t -aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -static int -_aper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - if (po->output) { - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); - } - return 0; -} - -asn_enc_rval_t -aper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->aper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->aper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_aper_encode_flush_outp(&po)) - ASN__ENCODE_FAILED; - } - - return er; -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_encoder.h b/3rdparty/E2SM-gNB-X2-V4.0.1/per_encoder.h deleted file mode 100644 index b615ef0..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_encoder.h +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_ENCODER_H_ -#define _PER_ENCODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. Use the following formula to convert to bytes: - * bytes = ((.encoded + 7) / 8) - */ -asn_enc_rval_t uper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -asn_enc_rval_t aper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * A variant of uper_encode() which encodes data into the existing buffer - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. - */ -asn_enc_rval_t uper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); - -asn_enc_rval_t aper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); -/* - * A variant of uper_encode_to_buffer() which allocates buffer itself. - * Returns the number of bytes in the buffer or -1 in case of failure. - * WARNING: This function produces a "Production of the complete encoding", - * with length of at least one octet. Contrast this to precise bit-packing - * encoding of uper_encode() and uper_encode_to_buffer(). - */ -ssize_t uper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void **buffer_r /* Buffer allocated and returned */ -); - -ssize_t -aper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *td, - const asn_per_constraints_t *constraints, - const void *sptr, - void **buffer_r -); - -/* - * Type of the generic PER encoder function. - */ -typedef asn_enc_rval_t(per_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_ENCODER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_opentype.c b/3rdparty/E2SM-gNB-X2-V4.0.1/per_opentype.c deleted file mode 100644 index 28f3cb6..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_opentype.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -typedef struct uper_ugot_key { - asn_per_data_t oldpd; /* Old per data source */ - size_t unclaimed; - size_t ot_moved; /* Number of bits moved by OT processing */ - int repeat; -} uper_ugot_key; - -static int uper_ugot_refill(asn_per_data_t *pd); -static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -/* - * Encode an "open type field". - * #10.1, #10.2 - */ -int -uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, - size); - - bptr = buf; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE - " to %s and allowing to save %" ASN_PRI_SSIZE, - size, td->name, may_save); - if(may_save < 0) break; - if(per_put_many_bits(po, bptr, may_save * 8)) break; - bptr = (char *)bptr + may_save; - size -= may_save; - if(need_eom && uper_put_length(po, 0, 0)) { - FREEMEM(buf); - return -1; - } - } while(size); - - FREEMEM(buf); - if(size) return -1; - - return 0; -} - -static asn_dec_rval_t -uper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = uper_get_length(pd, -1, 0, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -static asn_dec_rval_t CC_NOTUSED -uper_open_type_get_complex(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - uper_ugot_key arg; - asn_dec_rval_t rv; - ssize_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s from %s", td->name, - asn_bit_data_string(pd)); - arg.oldpd = *pd; - arg.unclaimed = 0; - arg.ot_moved = 0; - arg.repeat = 1; - pd->refill = uper_ugot_refill; - pd->refill_key = &arg; - pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ - pd->moved = 0; /* This now counts the open type size in bits */ - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); - ASN_DEBUG_INDENT_ADD(-4); - -#define UPDRESTOREPD do { \ - /* buffer and nboff are valid, preserve them. */ \ - pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ - pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ - pd->refill = arg.oldpd.refill; \ - pd->refill_key = arg.oldpd.refill_key; \ - } while(0) - - if(rv.code != RC_OK) { - UPDRESTOREPD; - return rv; - } - - ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, - asn_bit_data_string(pd), - asn_bit_data_string(&arg.oldpd), - (int)arg.unclaimed, (int)arg.repeat); - - padding = pd->moved % 8; - if(padding) { - int32_t pvalue; - if(padding > 7) { - ASN_DEBUG("Too large padding %d in open type", - (int)padding); - rv.code = RC_FAIL; - UPDRESTOREPD; - return rv; - } - padding = 8 - padding; - ASN_DEBUG("Getting padding of %d bits", (int)padding); - pvalue = per_get_few_bits(pd, padding); - switch(pvalue) { - case -1: - ASN_DEBUG("Padding skip failed"); - UPDRESTOREPD; - ASN__DECODE_STARVED; - case 0: break; - default: - ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", - (int)padding, (int)pvalue); - UPDRESTOREPD; - ASN__DECODE_FAILED; - } - } - if(pd->nboff != pd->nbits) { - ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, - asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); - if(1) { - UPDRESTOREPD; - ASN__DECODE_FAILED; - } else { - arg.unclaimed += pd->nbits - pd->nboff; - } - } - - /* Adjust pd back so it points to original data */ - UPDRESTOREPD; - - /* Skip data not consumed by the decoder */ - if(arg.unclaimed) { - ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); - switch(per_skip_bits(pd, arg.unclaimed)) { - case -1: - ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); - ASN__DECODE_STARVED; - case 0: - ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); - break; - default: - /* Padding must be blank */ - ASN_DEBUG("Non-blank unconsumed padding"); - ASN__DECODE_FAILED; - } - arg.unclaimed = 0; - } - - if(arg.repeat) { - ASN_DEBUG("Not consumed the whole thing"); - rv.code = RC_FAIL; - return rv; - } - - return rv; -} - - -asn_dec_rval_t -uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_TYPE_operation_t s_op; - asn_dec_rval_t rv; - - s_td.name = ""; - s_td.op = &s_op; - s_op.uper_decoder = uper_sot_suck; - - rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - -/* - * Internal functions. - */ - -static asn_dec_rval_t -uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - - (void)ctx; - (void)td; - (void)constraints; - (void)sptr; - - while(per_get_few_bits(pd, 1) >= 0); - - rv.code = RC_OK; - rv.consumed = pd->moved; - - return rv; -} - -static int -uper_ugot_refill(asn_per_data_t *pd) { - uper_ugot_key *arg = pd->refill_key; - ssize_t next_chunk_bytes, next_chunk_bits; - ssize_t avail; - - asn_per_data_t *oldpd = &arg->oldpd; - - ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", - (long)pd->moved, (long)oldpd->moved); - - /* Advance our position to where pd is */ - oldpd->buffer = pd->buffer; - oldpd->nboff = pd->nboff; - oldpd->nbits -= pd->moved - arg->ot_moved; - oldpd->moved += pd->moved - arg->ot_moved; - arg->ot_moved = pd->moved; - - if(arg->unclaimed) { - /* Refill the container */ - if(per_get_few_bits(oldpd, 1)) - return -1; - if(oldpd->nboff == 0) { - assert(0); - return -1; - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff - 1; - pd->nbits = oldpd->nbits; - ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", - (long)pd->moved); - return 0; - } - - if(!arg->repeat) { - ASN_DEBUG("Want more but refill doesn't have it"); - return -1; - } - - next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); - ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", - (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); - if(next_chunk_bytes < 0) return -1; - if(next_chunk_bytes == 0) { - pd->refill = 0; /* No more refills, naturally */ - assert(!arg->repeat); /* Implementation guarantee */ - } - next_chunk_bits = next_chunk_bytes << 3; - avail = oldpd->nbits - oldpd->nboff; - if(avail >= next_chunk_bits) { - pd->nbits = oldpd->nboff + next_chunk_bits; - arg->unclaimed = 0; - ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", - (long)next_chunk_bits, (long)oldpd->moved, - (long)oldpd->nboff, (long)oldpd->nbits, - (long)(oldpd->nbits - oldpd->nboff)); - } else { - pd->nbits = oldpd->nbits; - arg->unclaimed = next_chunk_bits - avail; - ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", - (long)avail, (long)next_chunk_bits, - (long)arg->unclaimed); - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff; - ASN_DEBUG("Refilled pd%s old%s", - asn_bit_data_string(pd), asn_bit_data_string(oldpd)); - return 0; -} - -static int -per_skip_bits(asn_per_data_t *pd, int skip_nbits) { - int hasNonZeroBits = 0; - while(skip_nbits > 0) { - int skip; - - /* per_get_few_bits() is more efficient when nbits <= 24 */ - if(skip_nbits < 24) - skip = skip_nbits; - else - skip = 24; - skip_nbits -= skip; - - switch(per_get_few_bits(pd, skip)) { - case -1: return -1; /* Starving */ - case 0: continue; /* Skipped empty space */ - default: hasNonZeroBits = 1; continue; - } - } - return hasNonZeroBits; -} - -static asn_dec_rval_t -aper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = aper_get_length(pd, -1, -1, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -int -aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - size_t toGo; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - for(bptr = buf, toGo = size; toGo;) { - ssize_t maySave = aper_put_length(po, -1, toGo); - if(maySave < 0) break; - if(per_put_many_bits(po, bptr, maySave * 8)) break; - bptr = (char *)bptr + maySave; - toGo -= maySave; - } - - FREEMEM(buf); - if(toGo) return -1; - - ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", - td->name, size); - - return 0; -} - -asn_dec_rval_t -aper_open_type_get(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_dec_rval_t rv; - asn_TYPE_operation_t op_t; - - memset(&op_t, 0, sizeof(op_t)); - s_td.name = ""; - s_td.op = &op_t; - s_td.op->aper_decoder = uper_sot_suck; - - rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_opentype.h b/3rdparty/E2SM-gNB-X2-V4.0.1/per_opentype.h deleted file mode 100644 index 1493b2d..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_opentype.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_OPENTYPE_H_ -#define _PER_OPENTYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, - asn_per_data_t *pd); - -/* - * X.691 (2015/08), #11.2 - * Returns -1 if error is encountered. 0 if all OK. - */ -int uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - - -int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); - -int aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_OPENTYPE_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_support.c b/3rdparty/E2SM-gNB-X2-V4.0.1/per_support.c deleted file mode 100644 index 2285677..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_support.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * X.691-201508 #10.9 General rules for encoding a length determinant. - * Get the optionally constrained length "n" from the stream. - */ -ssize_t -uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, - int *repeat) { - ssize_t value; - - *repeat = 0; - - /* #11.9.4.1 Encoding if constrained (according to effective bits) */ - if(ebits >= 0 && ebits <= 16) { - value = per_get_few_bits(pd, ebits); - if(value >= 0) value += lower_bound; - return value; - } - - value = per_get_few_bits(pd, 8); - if((value & 0x80) == 0) { /* #11.9.3.6 */ - return (value & 0x7F); - } else if((value & 0x40) == 0) { /* #11.9.3.7 */ - /* bit 8 ... set to 1 and bit 7 ... set to zero */ - value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); - return value; /* potential -1 from per_get_few_bits passes through. */ - } else if(value < 0) { - ASN_DEBUG("END of stream reached for PER"); - return -1; - } - value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ - if(value < 1 || value > 4) { - return -1; /* Prohibited by #11.9.3.8 */ - } - *repeat = 1; - return (16384 * value); -} - -/* - * Get the normally small length "n". - * This procedure used to decode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -ssize_t -uper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%d", (int)length); - return length; - } else { - int repeat; - length = uper_get_length(pd, -1, 0, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -/* - * Get the normally small non-negative whole number. - * X.691, #10.6 - */ -ssize_t -uper_get_nsnnwn(asn_per_data_t *pd) { - ssize_t value; - - value = per_get_few_bits(pd, 7); - if(value & 64) { /* implicit (value < 0) */ - value &= 63; - value <<= 2; - value |= per_get_few_bits(pd, 2); - if(value & 128) /* implicit (value < 0) */ - return -1; - if(value == 0) - return 0; - if(value >= 3) - return -1; - value = per_get_few_bits(pd, 8 * value); - return value; - } - - return value; -} - -/* - * X.691-11/2008, #11.6 - * Encoding of a normally small non-negative whole number - */ -int -uper_put_nsnnwn(asn_per_outp_t *po, int n) { - int bytes; - - if(n <= 63) { - if(n < 0) return -1; - return per_put_few_bits(po, n, 7); - } - if(n < 256) - bytes = 1; - else if(n < 65536) - bytes = 2; - else if(n < 256 * 65536) - bytes = 3; - else - return -1; /* This is not a "normally small" value */ - if(per_put_few_bits(po, bytes, 8)) - return -1; - - return per_put_few_bits(po, n, 8 * bytes); -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { - unsigned long lhalf; /* Lower half of the number*/ - long half; - - if(nbits <= 31) { - half = per_get_few_bits(pd, nbits); - if(half < 0) return -1; - *out_value = half; - return 0; - } - - if((size_t)nbits > 8 * sizeof(*out_value)) - return -1; /* RANGE */ - - half = per_get_few_bits(pd, 31); - if(half < 0) return -1; - - if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) - return -1; - - *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; - return 0; -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int -uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, - int nbits) { - if(nbits <= 31) { - return per_put_few_bits(po, v, nbits); - } else { - /* Put higher portion first, followed by lower 31-bit */ - if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) - return -1; - return per_put_few_bits(po, v, 31); - } -} - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "n" (or part of it) into the stream. - */ -ssize_t -uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { - int dummy = 0; - if(!need_eom) need_eom = &dummy; - - if(length <= 127) { /* #11.9.3.6 */ - *need_eom = 0; - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } else if(length < 16384) { /* #10.9.3.7 */ - *need_eom = 0; - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - } - - *need_eom = 0 == (length & 16383); - length >>= 14; - if(length > 4) { - *need_eom = 0; - length = 4; - } - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); - -} - - -/* - * Put the normally small length "n" into the stream. - * This procedure used to encode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -int -uper_put_nslength(asn_per_outp_t *po, size_t length) { - if(length <= 64) { - /* #11.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length - 1, 7) ? -1 : 0; - } else { - int need_eom = 0; - if(uper_put_length(po, length, &need_eom) != (ssize_t)length - || need_eom) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -static int -per__long_range(long lb, long ub, unsigned long *range_r) { - unsigned long bounds_range; - if((ub < 0) == (lb < 0)) { - bounds_range = ub - lb; - } else if(lb < 0) { - assert(ub >= 0); - bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); - } else { - assert(!"Unreachable"); - return -1; - } - *range_r = bounds_range; - return 0; -} - -int -per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { - unsigned long range; - - assert(lb <= ub); - - if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { - /* Range error. */ - return -1; - } - - /* - * Fundamentally what we're doing is returning (v-lb). - * However, this triggers undefined behavior when the word width - * of signed (v) is the same as the size of unsigned (*output). - * In practice, it triggers the UndefinedSanitizer. Therefore we shall - * compute the ranges accurately to avoid C's undefined behavior. - */ - if((v < 0) == (lb < 0)) { - *output = v-lb; - return 0; - } else if(v < 0) { - unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else if(lb < 0) { - unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else { - assert(!"Unreachable"); - return -1; - } -} - -int -per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { - unsigned long range; - - if(per__long_range(lb, ub, &range) != 0) { - return -1; - } - - if(inp > range) { - /* - * We can encode something in the given number of bits that technically - * exceeds the range. This is an avenue for security errors, - * so we don't allow that. - */ - return -1; - } - - if(inp <= LONG_MAX) { - *outp = (long)inp + lb; - } else { - *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); - } - - return 0; -} - -int32_t -aper_get_align(asn_per_data_t *pd) { - - if(pd->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); - return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); - } - return 0; -} - -ssize_t -aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { - ssize_t value; - - *repeat = 0; - - if (range <= 65536 && range >= 0) - return aper_get_nsnnwn(pd, range); - - if (aper_get_align(pd) < 0) - return -1; - - if(ebits >= 0) return per_get_few_bits(pd, ebits); - - value = per_get_few_bits(pd, 8); - if(value < 0) return -1; - if((value & 128) == 0) /* #10.9.3.6 */ - return (value & 0x7F); - if((value & 64) == 0) { /* #10.9.3.7 */ - value = ((value & 63) << 8) | per_get_few_bits(pd, 8); - if(value < 0) return -1; - return value; - } - value &= 63; /* this is "m" from X.691, #10.9.3.8 */ - if(value < 1 || value > 4) - return -1; - *repeat = 1; - return (16384 * value); -} - -ssize_t -aper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%ld", length); - return length; - } else { - int repeat; - length = aper_get_length(pd, -1, -1, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -ssize_t -aper_get_nsnnwn(asn_per_data_t *pd, int range) { - ssize_t value; - int bytes = 0; - - ASN_DEBUG("getting nsnnwn with range %d", range); - - if(range <= 255) { - int i; - - if (range < 0) return -1; - /* 1 -> 8 bits */ - for (i = 1; i <= 8; i++) { - int upper = 1 << i; - if (upper >= range) - break; - } - value = per_get_few_bits(pd, i); - return value; - } else if (range == 256){ - /* 1 byte */ - bytes = 1; - } else if (range <= 65536) { - /* 2 bytes */ - bytes = 2; - } else { - return -1; - } - if (aper_get_align(pd) < 0) - return -1; - value = per_get_few_bits(pd, 8 * bytes); - return value; -} - -int aper_put_align(asn_per_outp_t *po) { - - if(po->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); - if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) - return -1; - } - return 0; -} - -ssize_t -aper_put_length(asn_per_outp_t *po, int range, size_t length) { - - ASN_DEBUG("APER put length %zu with range %d", length, range); - - /* 10.9 X.691 Note 2 */ - if (range <= 65536 && range >= 0) - return aper_put_nsnnwn(po, range, length); - - if (aper_put_align(po) < 0) - return -1; - - if(length <= 127) /* #10.9.3.6 */{ - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } - else if(length < 16384) /* #10.9.3.7 */ - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - - length >>= 14; - if(length > 4) length = 4; - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); -} - - -int -aper_put_nslength(asn_per_outp_t *po, size_t length) { - - if(length <= 64) { - /* #10.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length-1, 7) ? -1 : 0; - } else { - if(aper_put_length(po, -1, length) != (ssize_t)length) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -int -aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { - int bytes; - - ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); - /* 10.5.7.1 X.691 */ - if(range < 0) { - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (number <= bits) - break; - } - bytes = i; - assert(i <= 4); - } - if(range <= 255) { - int i; - for (i = 1; i <= 8; i++) { - int bits = 1 << i; - if (range <= bits) - break; - } - return per_put_few_bits(po, number, i); - } else if(range == 256) { - bytes = 1; - } else if(range <= 65536) { - bytes = 2; - } else { /* Ranges > 64K */ - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (range <= bits) - break; - } - assert(i <= 4); - bytes = i; - } - if(aper_put_align(po) < 0) /* Aligning on octet */ - return -1; -/* if(per_put_few_bits(po, bytes, 8)) - return -1; -*/ - return per_put_few_bits(po, number, 8 * bytes); -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/per_support.h b/3rdparty/E2SM-gNB-X2-V4.0.1/per_support.h deleted file mode 100644 index 23079c9..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/per_support.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_SUPPORT_H_ -#define _PER_SUPPORT_H_ - -#include /* Platform-specific types */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed PER constraints. - */ -typedef struct asn_per_constraint_s { - enum asn_per_constraint_flags { - APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ - APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ - APC_CONSTRAINED = 0x2, /* Fully constrained */ - APC_EXTENSIBLE = 0x4 /* May have extension */ - } flags; - int range_bits; /* Full number of bits in the range */ - int effective_bits; /* Effective bits */ - long lower_bound; /* "lb" value */ - long upper_bound; /* "ub" value */ -} asn_per_constraint_t; -typedef struct asn_per_constraints_s { - asn_per_constraint_t value; - asn_per_constraint_t size; - int (*value2code)(unsigned int value); - int (*code2value)(unsigned int code); -} asn_per_constraints_t; - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_data_s asn_per_data_t; -#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) -#define per_get_undo(data, bits) asn_get_undo(data, bits) -#define per_get_many_bits(data, dst, align, bits) \ - asn_get_many_bits(data, dst, align, bits) - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Get the length "n" from the Unaligned PER stream. - */ -ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, - size_t lower_bound, int *repeat); - -ssize_t aper_get_length(asn_per_data_t *pd, int range, - int effective_bound_bits, int *repeat); - -/* - * Get the normally small length "n". - */ -ssize_t uper_get_nslength(asn_per_data_t *pd); -ssize_t aper_get_nslength(asn_per_data_t *pd); - -/* - * Get the normally small non-negative whole number. - */ -ssize_t uper_get_nsnnwn(asn_per_data_t *pd); -ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); - -/* X.691-2008/11, #11.5.6 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); - - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_outp_s asn_per_outp_t; -#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) -#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) -#define per_put_aligned_flush(out) asn_put_aligned_flush(out) - - -/* - * Rebase the given value as an offset into the range specified by the - * lower bound (lb) and upper bound (ub). - * RETURN VALUES: - * -1: Conversion failed due to range problems. - * 0: Conversion was successful. - */ -int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); -/* The inverse operation: restores the value by the offset and its bounds. */ -int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); - -/* X.691-2008/11, #11.5 */ -int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "whole_length" to the Unaligned PER stream. - * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. - * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. - * This function returns the number of units which may be flushed - * in the next units saving iteration. - */ -ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, - int *opt_need_eom); - -ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); - -/* Align the current bit position to octet bundary */ -int aper_put_align(asn_per_outp_t *po); -int32_t aper_get_align(asn_per_data_t *pd); - -/* - * Put the normally small length "n" to the Unaligned PER stream. - * Returns 0 or -1. - */ -int uper_put_nslength(asn_per_outp_t *po, size_t length); - -int aper_put_nslength(asn_per_outp_t *po, size_t length); - -/* - * Put the normally small non-negative whole number. - */ -int uper_put_nsnnwn(asn_per_outp_t *po, int n); - -int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_SUPPORT_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_decoder.c b/3rdparty/E2SM-gNB-X2-V4.0.1/xer_decoder.c deleted file mode 100644 index 5b87703..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_decoder.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* XER/XML parsing support */ - - -/* - * Decode the XER encoding of a given type. - */ -asn_dec_rval_t -xer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *buffer, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); -} - - - -struct xer__cb_arg { - pxml_chunk_type_e chunk_type; - size_t chunk_size; - const void *chunk_buf; - int callback_not_invoked; -}; - -static int -xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { - struct xer__cb_arg *arg = (struct xer__cb_arg *)key; - arg->chunk_type = type; - arg->chunk_size = _chunk_size; - arg->chunk_buf = _chunk_data; - arg->callback_not_invoked = 0; - return -1; /* Terminate the XML parsing */ -} - -/* - * Fetch the next token from the XER/XML stream. - */ -ssize_t -xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { - struct xer__cb_arg arg; - int new_stateContext = *stateContext; - ssize_t ret; - - arg.callback_not_invoked = 1; - ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); - if(ret < 0) return -1; - if(arg.callback_not_invoked) { - assert(ret == 0); /* No data was consumed */ - *ch_type = PXER_WMORE; - return 0; /* Try again with more data */ - } else { - assert(arg.chunk_size); - assert(arg.chunk_buf == buffer); - } - - /* - * Translate the XML chunk types into more convenient ones. - */ - switch(arg.chunk_type) { - case PXML_TEXT: - *ch_type = PXER_TEXT; - break; - case PXML_TAG: - *ch_type = PXER_WMORE; - return 0; /* Want more */ - case PXML_TAG_END: - *ch_type = PXER_TAG; - break; - case PXML_COMMENT: - case PXML_COMMENT_END: - *ch_type = PXER_COMMENT; - break; - } - - *stateContext = new_stateContext; - return arg.chunk_size; -} - -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define RANGLE 0x3e /* '>' */ - -xer_check_tag_e -xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { - const char *buf = (const char *)buf_ptr; - const char *end; - xer_check_tag_e ct = XCT_OPENING; - - if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { - if(size >= 2) - ASN_DEBUG("Broken XML tag: \"%c...%c\"", - buf[0], buf[size - 1]); - return XCT_BROKEN; - } - - /* - * Determine the tag class. - */ - if(buf[1] == CSLASH) { - buf += 2; /* advance past "" */ - ct = XCT_CLOSING; - if(size > 0 && buf[size-1] == CSLASH) - return XCT_BROKEN; /* */ - } else { - buf++; /* advance past "<" */ - size -= 2; /* strip "<" and ">" */ - if(size > 0 && buf[size-1] == CSLASH) { - ct = XCT_BOTH; - size--; /* One more, for "/" */ - } - } - - /* Sometimes we don't care about the tag */ - if(!need_tag || !*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - /* - * Determine the tag name. - */ - for(end = buf + size; buf < end; buf++, need_tag++) { - int b = *buf, n = *need_tag; - if(b != n) { - if(n == 0) { - switch(b) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* "": whitespace is normal */ - return ct; - } - } - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - } - if(b == 0) - return XCT_BROKEN; /* Embedded 0 in buf?! */ - } - if(*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - return ct; -} - - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - if(rval.code != RC_OK) \ - ASN_DEBUG("Failed with %d", rval.code); \ - return rval; \ - } while(0) - -#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ - ssize_t converted_size = body_receiver \ - (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ - if(converted_size == -1) RETURN(RC_FAIL); \ - if(converted_size == 0 \ - && size == (size_t)chunk_size) \ - RETURN(RC_WMORE); \ - chunk_size = converted_size; \ - } while(0) -#define XER_GOT_EMPTY() do { \ - if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ - RETURN(RC_FAIL); \ - } while(0) - -/* - * Generalized function for decoding the primitive values. - */ -asn_dec_rval_t -xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, - const char *xml_tag, /* Expected XML tag */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - - asn_dec_rval_t rval; - ssize_t consumed_myself = 0; - - (void)opt_codec_ctx; - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - */ - if(ctx->phase > 1) RETURN(RC_FAIL); - for(;;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TEXT: - if(ctx->phase == 0) { - /* - * We have to ignore whitespace here, - * but in order to be forward compatible - * with EXTENDED-XER (EMBED-VALUES, #25) - * any text is just ignored here. - */ - } else { - XER_GOT_BODY(buf_ptr, ch_size, size); - } - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - assert(ch_type == PXER_TAG && size); - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - /* - * Phase 0: - * Expecting the opening tag - * for the type being processed. - * Phase 1: - * Waiting for the closing XML tag. - */ - switch(tcv) { - case XCT_BOTH: - if(ctx->phase) break; - /* Finished decoding of an empty element */ - XER_GOT_EMPTY(); - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - case XCT_CLOSING: - if(!ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_UNKNOWN_BO: - /* - * Certain tags in the body may be expected. - */ - if(opt_unexpected_tag_decoder - && opt_unexpected_tag_decoder(struct_key, - buf_ptr, ch_size) >= 0) { - /* Tag's processed fine */ - ADVANCE(ch_size); - if(!ctx->phase) { - /* We are not expecting - * the closing tag anymore. */ - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - } - continue; - } - /* Fall through */ - default: - break; /* Unexpected tag */ - } - - ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); - break; /* Dark and mysterious things have just happened */ - } - - RETURN(RC_FAIL); -} - - -size_t -xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - - for(; p < pend; p++) { - switch(*p) { - /* X.693, #8.1.4 - * HORISONTAL TAB (9) - * LINE FEED (10) - * CARRIAGE RETURN (13) - * SPACE (32) - */ - case 0x09: case 0x0a: case 0x0d: case 0x20: - continue; - default: - break; - } - break; - } - return (p - (const char *)chunk_buf); -} - -/* - * This is a vastly simplified, non-validating XML tree skipper. - */ -int -xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { - assert(*depth > 0); - switch(tcv) { - case XCT_BOTH: - case XCT_UNKNOWN_BO: - /* These negate each other. */ - return 0; - case XCT_OPENING: - case XCT_UNKNOWN_OP: - ++(*depth); - return 0; - case XCT_CLOSING: - case XCT_UNKNOWN_CL: - if(--(*depth) == 0) - return (tcv == XCT_CLOSING) ? 2 : 1; - return 0; - default: - return -1; - } -} diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_decoder.h b/3rdparty/E2SM-gNB-X2-V4.0.1/xer_decoder.h deleted file mode 100644 index b951c41..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_decoder.h +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_DECODER_H_ -#define _XER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The XER decoder of any ASN.1 type. May be invoked by the application. - * Decodes CANONICAL-XER and BASIC-XER. - */ -asn_dec_rval_t xer_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Type of the type-specific XER decoder function. - */ -typedef asn_dec_rval_t(xer_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, - const char *opt_mname, /* Member name */ - const void *buf_ptr, size_t size); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Generalized function for decoding the primitive values. - * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 - * and others. This function should not be used by applications, as its API - * is subject to changes. - */ -asn_dec_rval_t xer_decode_general( - const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, /* Treated as opaque pointer */ - const char *xml_tag, /* Expected XML tag name */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, - size_t chunk_size, int have_more)); - - -/* - * Fetch the next XER (XML) token from the stream. - * The function returns the number of bytes occupied by the chunk type, - * returned in the _ch_type. The _ch_type is only set (and valid) when - * the return value is >= 0. - */ - typedef enum pxer_chunk_type { - PXER_WMORE, /* Chunk type is not clear, more data expected. */ - PXER_TAG, /* Complete XER tag */ - PXER_TEXT, /* Plain text between XER tags */ - PXER_COMMENT /* A comment, may be part of */ - } pxer_chunk_type_e; -ssize_t xer_next_token(int *stateContext, - const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); - -/* - * This function checks the buffer against the tag name is expected to occur. - */ - typedef enum xer_check_tag { - XCT_BROKEN = 0, /* The tag is broken */ - XCT_OPENING = 1, /* This is the tag */ - XCT_CLOSING = 2, /* This is the tag */ - XCT_BOTH = 3, /* This is the tag */ - XCT__UNK__MASK = 4, /* Mask of everything unexpected */ - XCT_UNKNOWN_OP = 5, /* Unexpected tag */ - XCT_UNKNOWN_CL = 6, /* Unexpected tag */ - XCT_UNKNOWN_BO = 7 /* Unexpected tag */ - } xer_check_tag_e; -xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, - const char *need_tag); - -/* - * Get the number of bytes consisting entirely of XER whitespace characters. - * RETURN VALUES: - * >=0: Number of whitespace characters in the string. - */ -size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); - -/* - * Skip the series of anticipated extensions. - */ -int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_DECODER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_encoder.c b/3rdparty/E2SM-gNB-X2-V4.0.1/xer_encoder.c deleted file mode 100644 index 4177ede..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_encoder.c +++ /dev/null @@ -1,237 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The XER encoder of any type. May be invoked by the application. - */ -asn_enc_rval_t -xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, - enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - asn_enc_rval_t tmper; - const char *mname; - size_t mlen; - int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; - - if(!td || !sptr) goto cb_failed; - - mname = td->xml_tag; - mlen = strlen(mname); - - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("\n", xcan); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -/* - * This is a helper function for xer_fprint, which directs all incoming data - * into the provided file descriptor. - */ -static int -xer__print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - -int -xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { - asn_enc_rval_t er = {0,0,0}; - - if(!stream) stream = stdout; - if(!td || !sptr) - return -1; - - er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); - if(er.encoded == -1) - return -1; - - return fflush(stream); -} - -struct xer_buffer { - char *buffer; - size_t buffer_size; - size_t allocated_size; -}; - -static int -xer__buffer_append(const void *buffer, size_t size, void *app_key) { - struct xer_buffer *xb = app_key; - - while(xb->buffer_size + size + 1 > xb->allocated_size) { - size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); - char *new_buf = MALLOC(new_size); - if(!new_buf) return -1; - if (xb->buffer) { - memcpy(new_buf, xb->buffer, xb->buffer_size); - } - FREEMEM(xb->buffer); - xb->buffer = new_buf; - xb->allocated_size = new_size; - } - - memcpy(xb->buffer + xb->buffer_size, buffer, size); - xb->buffer_size += size; - xb->buffer[xb->buffer_size] = '\0'; - return 0; -} - -enum xer_equivalence_e -xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, - const void *struct2, FILE *opt_debug_stream) { - struct xer_buffer xb1 = {0, 0, 0}; - struct xer_buffer xb2 = {0, 0, 0}; - asn_enc_rval_t e1, e2; - asn_dec_rval_t rval; - void *sptr = NULL; - - if(!td || !struct1 || !struct2) { - if(opt_debug_stream) { - if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); - if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); - if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); - } - return XEQ_FAILURE; - } - - e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); - if(e1.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - return XEQ_ENCODE1_FAILED; - } - - e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ENCODE1_FAILED; - } - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structures XER-encoded into different byte streams:\n=== " - "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", - xb1.buffer, xb2.buffer); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DIFFERENT; - } else { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Both structures encoded into the same XER byte stream " - "of size %" ASN_PRI_SIZE ":\n%s", - xb1.buffer_size, xb1.buffer); - } - } - - rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, - xb1.buffer_size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decode unexpectedly requires " - "more data:\n%s\n", - td->name, xb1.buffer); - } - /* Fall through */ - case RC_FAIL: - default: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decoding resulted in failure.\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DECODE_FAILED; - } - - if(rval.consumed != xb1.buffer_size - && ((rval.consumed > xb1.buffer_size) - || xer_whitespace_span(xb1.buffer + rval.consumed, - xb1.buffer_size - rval.consumed) - != (xb1.buffer_size - rval.consumed))) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " - "encoded (%" ASN_PRI_SIZE ")\n", - td->name, rval.consumed, xb1.buffer_size); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - /* - * Reuse xb2 to encode newly decoded structure. - */ - FREEMEM(xb2.buffer); - memset(&xb2, 0, sizeof(xb2)); - - e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - ASN_STRUCT_FREE(*td, sptr); - sptr = 0; - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "XER Encoding of round-trip decode of %s resulted in " - "different byte stream:\n" - "=== Original ===\n%s\n" - "=== Round-tripped ===\n%s\n", - xb1.buffer, xb2.buffer, td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_SUCCESS; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_encoder.h b/3rdparty/E2SM-gNB-X2-V4.0.1/xer_encoder.h deleted file mode 100644 index 9d75922..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_encoder.h +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_ENCODER_H_ -#define _XER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ -enum xer_encoder_flags_e { - /* Mode of encoding */ - XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ - XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ -}; - -/* - * The XER encoder of any type. May be invoked by the application. - * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). - */ -asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* - * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) - * output into the chosen file pointer. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem printing the structure. - * WARNING: No sensible errno value is returned. - */ -int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, - const void *struct_ptr); - -/* - * A helper function that uses XER encoding/decoding to verify that: - * - Both structures encode into the same BASIC XER. - * - Both resulting XER byte streams can be decoded back. - * - Both decoded structures encode into the same BASIC XER (round-trip). - * All of this verifies equivalence between structures and a round-trip. - * ARGUMENTS: - * (opt_debug_stream) - If specified, prints ongoing details. - */ -enum xer_equivalence_e { - XEQ_SUCCESS, /* The only completely positive return value */ - XEQ_FAILURE, /* General failure */ - XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ - XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ - XEQ_DIFFERENT, /* Structures encoded into different XER */ - XEQ_DECODE_FAILED, /* Decode of the XER data failed */ - XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ -}; -enum xer_equivalence_e xer_equivalent( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, - const void *struct2, FILE *opt_debug_stream); - -/* - * Type of the generic XER encoder. - */ -typedef asn_enc_rval_t(xer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int ilevel, /* Level of indentation */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_ENCODER_H_ */ diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_support.c b/3rdparty/E2SM-gNB-X2-V4.0.1/xer_support.c deleted file mode 100644 index 36b4bfb..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_support.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* Parser states */ -typedef enum { - ST_TEXT, - ST_TAG_START, - ST_TAG_BODY, - ST_TAG_QUOTE_WAIT, - ST_TAG_QUOTED_STRING, - ST_TAG_UNQUOTED_STRING, - ST_COMMENT_WAIT_DASH1, /* ""[0] */ - ST_COMMENT_CLO_RT /* "-->"[1] */ -} pstate_e; - -static const int -_charclass[256] = { - 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, - 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ -}; -#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) -#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) -#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) - -/* Aliases for characters, ASCII/UTF-8 */ -#define EXCLAM 0x21 /* '!' */ -#define CQUOTE 0x22 /* '"' */ -#define CDASH 0x2d /* '-' */ -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define CEQUAL 0x3d /* '=' */ -#define RANGLE 0x3e /* '>' */ -#define CQUEST 0x3f /* '?' */ - -/* Invoke token callback */ -#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ - int _ret; \ - pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ - if (!_sz) { \ - /* Shortcut */ \ - state = _ns; \ - break; \ - } \ - _ret = cb(type, chunk_start, _sz, key); \ - if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ - state = ns; \ - goto finish; \ - } \ - chunk_start = p + _current_too; \ - state = ns; \ - } while(0) - -#define TOKEN_CB(_type, _ns, _current_too) \ - TOKEN_CB_CALL(_type, _ns, _current_too, 0) - -#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END -#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END - -#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ - TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) - -/* - * Parser itself - */ -ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { - pstate_e state = (pstate_e)*stateContext; - const char *chunk_start = (const char *)xmlbuf; - const char *p = chunk_start; - const char *end = p + size; - - for(; p < end; p++) { - int C = *(const unsigned char *)p; - switch(state) { - case ST_TEXT: - /* - * Initial state: we're in the middle of some text, - * or just have started. - */ - if (C == LANGLE) - /* We're now in the tag, probably */ - TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); - break; - case ST_TAG_START: - if (ALPHA(C) || (C == CSLASH)) - state = ST_TAG_BODY; - else if (C == EXCLAM) - state = ST_COMMENT_WAIT_DASH1; - else - /* - * Not characters and not whitespace. - * Must be something like "3 < 4". - */ - TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ - break; - case ST_TAG_BODY: - switch(C) { - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - case LANGLE: - /* - * The previous tag wasn't completed, but still - * recognized as valid. (Mozilla-compatible) - */ - TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); - break; - case CEQUAL: - state = ST_TAG_QUOTE_WAIT; - break; - } - break; - case ST_TAG_QUOTE_WAIT: - /* - * State after the equal sign ("=") in the tag. - */ - switch(C) { - case CQUOTE: - state = ST_TAG_QUOTED_STRING; - break; - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - default: - if(!WHITESPACE(C)) - /* Unquoted string value */ - state = ST_TAG_UNQUOTED_STRING; - } - break; - case ST_TAG_QUOTED_STRING: - /* - * Tag attribute's string value in quotes. - */ - if(C == CQUOTE) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_TAG_UNQUOTED_STRING: - if(C == RANGLE) { - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - } else if(WHITESPACE(C)) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH1: - if(C == CDASH) { - state = ST_COMMENT_WAIT_DASH2; - } else { - /* Some ordinary tag. */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH2: - if(C == CDASH) { - /* Seen "<--" */ - state = ST_COMMENT; - } else { - /* Some ordinary tag */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT: - if(C == CDASH) { - state = ST_COMMENT_CLO_DASH2; - } - break; - case ST_COMMENT_CLO_DASH2: - if(C == CDASH) { - state = ST_COMMENT_CLO_RT; - } else { - /* This is not an end of a comment */ - state = ST_COMMENT; - } - break; - case ST_COMMENT_CLO_RT: - if(C == RANGLE) { - TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); - } else if(C == CDASH) { - /* Maintain current state, still waiting for '>' */ - } else { - state = ST_COMMENT; - } - break; - } /* switch(*ptr) */ - } /* for() */ - - /* - * Flush the partially processed chunk, state permitting. - */ - if(p - chunk_start) { - switch (state) { - case ST_COMMENT: - TOKEN_CB(PXML_COMMENT, state, 0); - break; - case ST_TEXT: - TOKEN_CB(PXML_TEXT, state, 0); - break; - default: break; /* a no-op */ - } - } - -finish: - *stateContext = (int)state; - return chunk_start - (const char *)xmlbuf; -} - diff --git a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_support.h b/3rdparty/E2SM-gNB-X2-V4.0.1/xer_support.h deleted file mode 100644 index c3a36e7..0000000 --- a/3rdparty/E2SM-gNB-X2-V4.0.1/xer_support.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_SUPPORT_H_ -#define _XER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Types of data transferred to the application. - */ -typedef enum { - PXML_TEXT, /* Plain text between XML tags. */ - PXML_TAG, /* A tag, starting with '<'. */ - PXML_COMMENT, /* An XML comment, including "". */ - /* - * The following chunk types are reported if the chunk - * terminates the specified XML element. - */ - PXML_TAG_END, /* Tag ended */ - PXML_COMMENT_END /* Comment ended */ -} pxml_chunk_type_e; - -/* - * Callback function that is called by the parser when parsed data is - * available. The _opaque is the pointer to a field containing opaque user - * data specified in pxml_create() call. The chunk type is _type and the text - * data is the piece of buffer identified by _bufid (as supplied to - * pxml_feed() call) starting at offset _offset and of _size bytes size. - * The chunk is NOT '\0'-terminated. - */ -typedef int (pxml_callback_f)(pxml_chunk_type_e _type, - const void *_chunk_data, size_t _chunk_size, void *_key); - -/* - * Parse the given buffer as it were a chunk of XML data. - * Invoke the specified callback each time the meaninful data is found. - * This function returns number of bytes consumed from the bufer. - * It will always be lesser than or equal to the specified _size. - * The next invocation of this function must account the difference. - */ -ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, - pxml_callback_f *cb, void *_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_SUPPORT_H_ */ diff --git a/Dockerfile b/Dockerfile index 5b9970a..67fd2e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ ########################################################### # ########################################################### -FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:8-u18.04 as submgrcore +FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:9-u18.04 as submgrcore RUN apt update && apt install -y iputils-ping net-tools curl tcpdump gdb valgrind @@ -90,23 +90,8 @@ RUN cd 3rdparty/E2AP-v01.00.00 && \ cp *.h /usr/local/include/ && \ ldconfig -RUN cd 3rdparty/E2SM-gNB-NRT_V4.0.1 && \ - gcc -c ${CFLAGS} -I. -g -fPIC *.c && \ - gcc *.o -g -shared -o libgnbnrt.so && \ - cp libgnbnrt.so /usr/local/lib/ && \ - cp *.h /usr/local/include/ && \ - ldconfig - -RUN cd 3rdparty/E2SM-gNB-X2-V4.0.1 && \ - gcc -c ${CFLAGS} -I. -g -fPIC *.c && \ - gcc *.o -g -shared -o libgnbx2.so && \ - cp libgnbx2.so /usr/local/lib/ && \ - cp *.h /usr/local/include/ && \ - ldconfig RUN echo "E2AP E2AP-v01.00.00" >> /manifests/versions.txt -RUN echo "E2SM-gNB-NRT E2SM-gNB-NRT_V4.0.1" >> /manifests/versions.txt -RUN echo "E2SM-gNB-X2 E2SM-gNB-X2-V4.0.1" >> /manifests/versions.txt COPY e2ap e2ap RUN cd e2ap/libe2ap_wrapper && \ @@ -220,5 +205,4 @@ COPY config /opt/config ENV CFG_FILE=/opt/config/submgr-config.yaml ENV RMR_SEED_RT=/opt/config/submgr-uta-rtg.rt - ENTRYPOINT ["/submgr"] diff --git a/e2ap/libe2ap_wrapper/E2AP_if.c b/e2ap/libe2ap_wrapper/E2AP_if.c index 9a5dc0a..8686908 100644 --- a/e2ap/libe2ap_wrapper/E2AP_if.c +++ b/e2ap/libe2ap_wrapper/E2AP_if.c @@ -20,28 +20,11 @@ #include #include -#include "E2_asn_constant.h" #include "E2AP-PDU.h" #include "ProtocolIE-Field.h" #include "RICsubsequentAction.h" -#include "E2_E2SM-gNB-X2-eventTriggerDefinition.h" -#include "E2_E2SM-gNB-NRT-EventTriggerDefinition.h" -#include "E2_E2SM-gNB-X2-ActionDefinitionChoice.h" -#include "E2_E2SM-gNB-X2-actionDefinition.h" -#include "E2_ActionParameter-Item.h" -#include "E2_E2SM-gNB-X2-ActionDefinition-Format2.h" -#include "E2_RANueGroup-Item.h" -#include "E2_RANueGroupDef-Item.h" -#include "E2_RANimperativePolicy.h" -#include "E2_RANParameter-Item.h" - -// E2SM-gNB-NRT -#include "E2_E2SM-gNB-NRT-ActionDefinition.h" -#include "E2_E2SM-gNB-NRT-ActionDefinition-Format1.h" -#include "E2_RANparameter-Item.h" #include "asn_constant.h" -#include "E2_asn_constant.h" #include "E2AP_if.h" @@ -170,10 +153,6 @@ uint64_t packRICSubscriptionRequest(size_t* pdataBufferSize, byte* pDataBuffer, pRICsubscriptionRequest_IEs->value.present = RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails; // RICeventTriggerDefinition - uint64_t returnCode; - if ((returnCode = packRICEventTriggerDefinition(pLogBuffer, &pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition) != e2err_OK)) - return returnCode; - pRICsubscriptionRequest_IEs->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition.buf = calloc(1, pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.octetString.contentLength); if (pRICsubscriptionRequest_IEs->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition.buf) { @@ -205,10 +184,6 @@ uint64_t packRICSubscriptionRequest(size_t* pdataBufferSize, byte* pDataBuffer, // RICactionDefinition, OPTIONAL if (pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent) { - uint64_t returnCode; - if ((returnCode = packRICActionDefinition(pLogBuffer, &pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice) != e2err_OK)) { - return returnCode; - } pRICaction_ToBeSetup_ItemIEs->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition = calloc(1, sizeof (RICactionDefinition_t)); if (pRICaction_ToBeSetup_ItemIEs->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition) { pRICaction_ToBeSetup_ItemIEs->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition->buf = @@ -259,676 +234,6 @@ uint64_t packRICSubscriptionRequest(size_t* pdataBufferSize, byte* pDataBuffer, return e2err_RICSubscriptionRequestAllocE2AP_PDUFail; } -////////////////////////////////////////////////////////////////////// -uint64_t packRICEventTriggerDefinition(char* pLogBuffer, RICEventTriggerDefinition_t* pRICEventTriggerDefinition) { - - if (pRICEventTriggerDefinition->E2SMgNBX2EventTriggerDefinitionPresent) - return packRICEventTriggerDefinitionX2Format(pLogBuffer, pRICEventTriggerDefinition); - else if(pRICEventTriggerDefinition->E2SMgNBNRTEventTriggerDefinitionPresent) - return packRICEventTriggerDefinitionNRTFormat(pLogBuffer, pRICEventTriggerDefinition); - else - return e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail; -} - -////////////////////////////////////////////////////////////////////// -uint64_t packRICEventTriggerDefinitionX2Format(char* pLogBuffer, RICEventTriggerDefinition_t* pRICEventTriggerDefinition) { - - E2_E2SM_gNB_X2_eventTriggerDefinition_t* pE2SM_gNB_X2_eventTriggerDefinition = calloc(1, sizeof(E2_E2SM_gNB_X2_eventTriggerDefinition_t)); - if(pE2SM_gNB_X2_eventTriggerDefinition == NULL) - return e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail; - - // RICeventTriggerDefinition - // InterfaceID - if ((pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent == true && - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent == true) || - (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent == false && - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent == false)) - return e2err_RICEventTriggerDefinitionIEValueFail_1; - - // GlobalENB-ID or GlobalGNB-ID - if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent) - { - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.present = E2_Interface_ID_PR_global_eNB_ID; - - // GlobalENB-ID - // PLMN-Identity - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.size = - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.buf = calloc(1,3); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.buf) { - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.buf, - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal, - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength); - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail; - - // Add ENB-ID - if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits == cMacroENBIDP_20Bits){ - // BIT STRING, SIZE 20 - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present = ENB_ID_PR_macro_eNB_ID; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.buf = calloc(1,3); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.buf) { - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.size = 3; // bytes - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.bits_unused = 4; // trailing unused bits - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.buf, - (void*)&pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID,3); - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail; - } - else if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits == cHomeENBID_28Bits) { - // BIT STRING, SIZE 28 - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present = ENB_ID_PR_home_eNB_ID; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.buf = calloc(1,4); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.buf) { - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.size = 4; // bytes - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.bits_unused = 4; // trailing unused bits - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.buf, - (void*)&pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID,4); - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail; - } - else if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits == cShortMacroENBID_18Bits) { - // BIT STRING, SIZE 18 - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present = ENB_ID_PR_short_Macro_eNB_ID; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.buf = calloc(1,3); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.buf) { - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.size = 3; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.bits_unused = 6; // trailing unused bits - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.buf, - (void*)&pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID,3); - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail; - } - else if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits == clongMacroENBIDP_21Bits) { - // BIT STRING, SIZE 21 - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present = ENB_ID_PR_long_Macro_eNB_ID; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.buf = calloc(1,3); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.buf) { - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.size = 3; // bytes - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.bits_unused = 3; // trailing unused bits - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.buf, - (void*)&pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID,3); - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail; - } - else - return e2err_RICEventTriggerDefinitionIEValueFail_2; - } - else if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent) { - // GlobalGNB-ID - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.present = E2_Interface_ID_PR_global_gNB_ID; - - // PLMN-Identity - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.pLMN_Identity.size = - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength; - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.pLMN_Identity.buf = - calloc(1,pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.pLMN_Identity.buf) { - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.pLMN_Identity.buf, - (void*)&pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal, - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength); - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail; - - // GNB-ID, BIT STRING, SIZE 22..32 - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.choice.gNB_ID.size = 4; //32bits - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.choice.gNB_ID.buf = calloc(1, 4); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.choice.gNB_ID.buf) { - memcpy(pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.choice.gNB_ID.buf, - (void*)&pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID,4); //32bits - } - else - return e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail; - } - else - return e2err_RICEventTriggerDefinitionIEValueFail_3; - - // InterfaceDirection - pE2SM_gNB_X2_eventTriggerDefinition->interfaceDirection = pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceDirection; - - // InterfaceMessageType - // ProcedureCode - pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.procedureCode = pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.procedureCode; - - // TypeOfMessage - if(pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage == cE2InitiatingMessage) - pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.typeOfMessage = E2_TypeOfMessage_initiating_message; - else if(pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage == cE2SuccessfulOutcome) - pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.typeOfMessage = E2_TypeOfMessage_successful_outcome; - else if(pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage == cE2UnsuccessfulOutcome) - pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.typeOfMessage = E2_TypeOfMessage_unsuccessful_outcome; - else - return e2err_RICEventTriggerDefinitionIEValueFail_4; - - // InterfaceProtocolIE-List, OPTIONAL. Not used in RIC currently - if (pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceProtocolIEListPresent == true) {} - - // Debug print - if (debug) - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - - // Encode - size_t bufferSize = sizeof(pRICEventTriggerDefinition->octetString.data); - asn_enc_rval_t rval; - rval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition, - pRICEventTriggerDefinition->octetString.data, bufferSize); - - if(rval.encoded == -1) { - sprintf(pLogBuffer,"Serialization of %s failed", asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition.name); - return e2err_RICEventTriggerDefinitionPackFail_1; - } - else if(rval.encoded > bufferSize) { - sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition.name, rval.encoded); - return e2err_RICEventTriggerDefinitionPackFail_2; - } - else - if (debug) - sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition.name, bufferSize, rval.encoded); - - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - - pRICEventTriggerDefinition->octetString.contentLength = rval.encoded; - return e2err_OK; -} - -////////////////////////////////////////////////////////////////////// -uint64_t packRICEventTriggerDefinitionNRTFormat(char* pLogBuffer, RICEventTriggerDefinition_t* pRICEventTriggerDefinition) { - - E2_E2SM_gNB_NRT_EventTriggerDefinition_t* pE2_E2SM_gNB_NRT_EventTriggerDefinition = calloc(1, sizeof(E2_E2SM_gNB_NRT_EventTriggerDefinition_t)); - if(pE2_E2SM_gNB_NRT_EventTriggerDefinition == NULL) - return e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail; - - pE2_E2SM_gNB_NRT_EventTriggerDefinition->present = E2_E2SM_gNB_NRT_EventTriggerDefinition_PR_eventDefinition_Format1; - pE2_E2SM_gNB_NRT_EventTriggerDefinition->choice.eventDefinition_Format1.triggerNature = - pRICEventTriggerDefinition->e2SMgNBNRTEventTriggerDefinition.eventDefinitionFormat1.triggerNature; - - // Debug print - if (debug) - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition); - - // Encode - size_t bufferSize = sizeof(pRICEventTriggerDefinition->octetString.data); - asn_enc_rval_t rval; - rval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition, - pRICEventTriggerDefinition->octetString.data, bufferSize); - - if(rval.encoded == -1) { - sprintf(pLogBuffer,"Serialization of %s failed", asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name); - return e2err_RICENRTventTriggerDefinitionPackFail_1; - } - else if(rval.encoded > bufferSize) { - sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name, rval.encoded); - return e2err_RICNRTEventTriggerDefinitionPackFail_2; - } - else - if (debug) - sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name, bufferSize, rval.encoded); - - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition); - - pRICEventTriggerDefinition->octetString.contentLength = rval.encoded; - return e2err_OK; -} - -////////////////////////////////////////////////////////////////////// -uint64_t packRICActionDefinition(char* pLogBuffer, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) { - - if (pRICActionDefinitionChoice->actionDefinitionX2Format1Present || - pRICActionDefinitionChoice->actionDefinitionX2Format2Present) { - // E2SM-gNB-X2-actionDefinition - return packActionDefinitionX2Format(pLogBuffer,pRICActionDefinitionChoice); - } - else if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present) { - // E2SM-gNB-NRT-actionDefinition - return packActionDefinitionNRTFormat(pLogBuffer,pRICActionDefinitionChoice); - } - else - return e2err_RICSubscriptionRequestRICActionDefinitionEmpty; -} - -////////////////////////////////////////////////////////////////////// -uint64_t packActionDefinitionX2Format(char* pLogBuffer, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) { - - int result; - - // E2SM-gNB-X2-actionDefinition - E2_E2SM_gNB_X2_ActionDefinitionChoice_t* pE2_E2SM_gNB_X2_ActionDefinitionChoice = calloc(1, sizeof(E2_E2SM_gNB_X2_ActionDefinitionChoice_t)); - if (pE2_E2SM_gNB_X2_ActionDefinitionChoice == NULL) { - return e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail; - } - - if (pRICActionDefinitionChoice->actionDefinitionX2Format1Present) { - - // E2SM-gNB-X2-actionDefinition - pE2_E2SM_gNB_X2_ActionDefinitionChoice->present = E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format1; - pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.style_ID = pRICActionDefinitionChoice->actionDefinitionX2Format1->styleID; - - if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterCount > 0) { - struct E2_E2SM_gNB_X2_actionDefinition__actionParameter_List* pE2_E2SM_gNB_X2_actionDefinition__actionParameter_List = - calloc(1, sizeof (struct E2_E2SM_gNB_X2_actionDefinition__actionParameter_List)); - uint64_t index = 0; - while (index < pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterCount && index < E2_maxofRANParameters) { - E2_ActionParameter_Item_t* pE2_ActionParameter_Item = calloc(1, sizeof(E2_ActionParameter_Item_t)); - if (pE2_ActionParameter_Item) { - pE2_ActionParameter_Item->actionParameter_ID = pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].parameterID; - if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueIntPresent) { - pE2_ActionParameter_Item->actionParameter_Value.present = E2_ActionParameter_Value_PR_valueInt; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueInt = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueInt; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueEnumPresent) { - pE2_ActionParameter_Item->actionParameter_Value.present = E2_ActionParameter_Value_PR_valueEnum; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueEnum = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueIntPresent; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBoolPresent) { - pE2_ActionParameter_Item->actionParameter_Value.present = E2_ActionParameter_Value_PR_valueBool; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBool = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBool; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitSPresent) { - pE2_ActionParameter_Item->actionParameter_Value.present = E2_ActionParameter_Value_PR_valueBitS; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS.byteLength; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.bits_unused = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS.unusedBits; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS.byteLength, 1); - if (pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.buf) { - memcpy(pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS.byteLength); - } - else - return e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctSPresent) { - pE2_ActionParameter_Item->actionParameter_Value.present = E2_ActionParameter_Value_PR_valueOctS; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctS.length; - pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctS.length, 1); - if (pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.buf) { - memcpy(pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtSPresent) { - pE2_ActionParameter_Item->actionParameter_Value.present = E2_ActionParameter_Value_PR_valuePrtS; - pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtS.length; - pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtS.length ,1); - if (pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.buf) { - memcpy(pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail; - } - else - return e2err_RICSubscriptionRequestActionParameterItemFail; - - if ((result = asn_set_add(pE2_E2SM_gNB_X2_actionDefinition__actionParameter_List, pE2_ActionParameter_Item)) != 0) - return e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail; - } - else - return e2err_RICSubscriptionRequestAllocActionDefinitionFail; - index++; - } - pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List = pE2_E2SM_gNB_X2_actionDefinition__actionParameter_List; - } - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2Present) { - - // E2SM-gNB-X2-ActionDefinition-Format2 - pE2_E2SM_gNB_X2_ActionDefinitionChoice->present = E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format2; - - if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupCount > 0) { - struct E2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List* pE2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List = - calloc(1, sizeof(struct E2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List)); - - uint64_t index = 0; - while (index < pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupCount && index < E2_maxofUEgroup) { - - E2_RANueGroup_Item_t* pE2_RANueGroup_Item = calloc(1, sizeof(E2_RANueGroup_Item_t)); - if (pE2_RANueGroup_Item) { - - struct E2_RANueGroupDefinition__ranUEgroupDef_List* pE2_RANueGroupDefinition__ranUEgroupDef_List = - calloc(1, sizeof (struct E2_RANueGroupDefinition__ranUEgroupDef_List)); - - pE2_RANueGroup_Item->ranUEgroupID = pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupID; - - uint64_t index2 = 0; - while (index2 < pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefCount && index2 < E2_maxofRANParameters) { - E2_RANueGroupDef_Item_t* pE2_RANueGroupDef_Item = calloc(1, sizeof(E2_RANueGroupDef_Item_t)); - if(pE2_RANueGroupDef_Item) { - pE2_RANueGroupDef_Item->ranParameter_ID = pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterID; - pE2_RANueGroupDef_Item->ranParameter_Test = pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterTest; - if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueIntPresent) { - pE2_RANueGroupDef_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueInt; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueInt = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueInt; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueEnum) { - pE2_RANueGroupDef_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueEnum; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueEnum = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueEnum; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBoolPresent) { - pE2_RANueGroupDef_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueBool; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBool = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBool; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitSPresent) { - pE2_RANueGroupDef_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueBitS; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS.byteLength; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.bits_unused = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS.unusedBits; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS.byteLength, 1); - if (pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.buf) { - memcpy(pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS.byteLength); - } - else - return e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctSPresent) { - pE2_RANueGroupDef_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueOctS; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctS.length; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctS.length, 1); - if (pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.buf) { - memcpy(pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtSPresent) { - pE2_RANueGroupDef_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valuePrtS; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtS.length; - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtS.length, 1); - if (pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.buf) { - memcpy(pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail; - } - else - return e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail; - - if ((result = asn_set_add(pE2_RANueGroupDefinition__ranUEgroupDef_List, pE2_RANueGroupDef_Item)) != 0) - return e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail; - pE2_RANueGroup_Item->ranUEgroupDefinition.ranUEgroupDef_List = pE2_RANueGroupDefinition__ranUEgroupDef_List; - } - else - return e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail; - index2++; - } - - struct E2_RANimperativePolicy__ranImperativePolicy_List* pE2_RANimperativePolicy__ranImperativePolicy_List = - calloc(1, sizeof (struct E2_RANimperativePolicy__ranImperativePolicy_List)); - - uint64_t index3 = 0; - while (index3 < pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterCount && index3 < E2_maxofRANParameters) { - E2_RANParameter_Item_t* pE2_RANParameter_Item = calloc(1, sizeof(E2_RANParameter_Item_t)); - if (pE2_RANParameter_Item) { - pE2_RANParameter_Item->ranParameter_ID = pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterID; - if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueIntPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueInt; - pE2_RANParameter_Item->ranParameter_Value.choice.valueInt = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueInt; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueEnum) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueEnum; - pE2_RANParameter_Item->ranParameter_Value.choice.valueEnum = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueEnum; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBoolPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueBool; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBool = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBool; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitSPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueBitS; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS.byteLength; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.bits_unused = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS.unusedBits; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS.byteLength, 1); - if (pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf) { - memcpy(pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS.byteLength); - } - else - return e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctSPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueOctS; - pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctS.length; - pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctS.length, 1); - if (pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf) { - memcpy(pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtSPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valuePrtS; - pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.size = - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtS.length; - pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtS.length, 1); - if (pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf) { - memcpy(pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtS.data, - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail; - } - else - return e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail; - - if ((result = asn_set_add(pE2_RANimperativePolicy__ranImperativePolicy_List, pE2_RANParameter_Item)) != 0) - return e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail; - pE2_RANueGroup_Item->ranPolicy.ranImperativePolicy_List = pE2_RANimperativePolicy__ranImperativePolicy_List; - } - else - return e2err_RICSubscriptionRequestAllocActionDefinitionFail; - index3++; - } - - const int result = asn_set_add(pE2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List, pE2_RANueGroup_Item); - if (result != 0) - sprintf(pLogBuffer,"asn_set_add() failed"); - } - else - return e2err_RICSubscriptionRequestAllocRANParameter_ItemFail; - index++; - } - pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format2.ranUEgroup_List = pE2_E2SM_gNB_X2_ActionDefinition_Format2__ranUEgroup_List; - } - } - else { - return e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition; - } - - // Debug print - if (debug) - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - - // Encode - size_t bufferSize = sizeof(pRICActionDefinitionChoice->octetString.data); - asn_enc_rval_t rval; - rval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice, - pRICActionDefinitionChoice->octetString.data, bufferSize); - if(rval.encoded == -1) { - sprintf(pLogBuffer,"Serialization of %s failed", asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name); - return e2err_RICActionDefinitionChoicePackFail_1; - } - else if(rval.encoded > bufferSize) { - sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name, rval.encoded); - return e2err_RICActionDefinitionChoicePackFail_2; - } - else - if (debug) - sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name, bufferSize, rval.encoded); - - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - - pRICActionDefinitionChoice->octetString.contentLength = rval.encoded; - return e2err_OK; -} - -////////////////////////////////////////////////////////////////////// -uint64_t packActionDefinitionNRTFormat(char* pLogBuffer, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) { - - // E2SM-gNB-NRT-actionDefinition - E2_E2SM_gNB_NRT_ActionDefinition_t* pE2_E2SM_gNB_NRT_ActionDefinition = calloc(1, sizeof(E2_E2SM_gNB_NRT_ActionDefinition_t)); - if (pE2_E2SM_gNB_NRT_ActionDefinition == NULL) - return e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail; - - if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present) { - - // E2SM-gNB-NRT-ActionDefinition-Format1 - pE2_E2SM_gNB_NRT_ActionDefinition->present = E2_E2SM_gNB_NRT_ActionDefinition_PR_actionDefinition_Format1; - - struct E2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List* pE2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List = - calloc(1, sizeof(struct E2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List)); - - uint64_t index = 0; - while (index < pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount && index < E2_maxofRANParameters) { - E2_RANParameter_Item_t* pE2_RANParameter_Item = calloc(1, sizeof(E2_RANParameter_Item_t)); - if (pE2_RANParameter_Item) { - pE2_RANParameter_Item->ranParameter_ID = pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterID; - if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueIntPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueInt; - pE2_RANParameter_Item->ranParameter_Value.choice.valueInt = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueInt; - } - else if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnum) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueEnum; - pE2_RANParameter_Item->ranParameter_Value.choice.valueEnum = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnum; - } - else if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBoolPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueBool; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBool = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBool; - } - else if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitSPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueBitS; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.size = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS.byteLength; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.bits_unused = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS.unusedBits; - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS.byteLength, 1); - if (pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf) { - memcpy(pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf, - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS.data, - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS.byteLength); - } - else - return e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctSPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valueOctS; - pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.size = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS.length; - pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS.length, 1); - if (pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf) { - memcpy(pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf, - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS.data, - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail; - } - else if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtSPresent) { - pE2_RANParameter_Item->ranParameter_Value.present = E2_RANParameter_Value_PR_valuePrtS; - pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.size = - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS.length; - pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf = - calloc(pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS.length, 1); - if (pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf) { - memcpy(pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf, - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS.data, - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS.length); - } - else - return e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail; - } - else - return e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail; - - int result; - if ((result = asn_set_add(pE2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List, pE2_RANParameter_Item)) != 0) - return e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail; - pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List = pE2_E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List; - } - else - return e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail; - index++; - } - } - else - return e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition; - - // Debug print - if (debug) - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - - // Encode - size_t bufferSize = sizeof(pRICActionDefinitionChoice->octetString.data); - asn_enc_rval_t rval; - rval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition, - pRICActionDefinitionChoice->octetString.data, bufferSize); - if(rval.encoded == -1) { - sprintf(pLogBuffer,"Serialization of %s failed", asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name); - return e2err_RICActionDefinitionChoicePackFail_1; - } - else if(rval.encoded > bufferSize) { - sprintf(pLogBuffer,"Buffer of size %zu is too small for %s, need %zu",bufferSize, asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name, rval.encoded); - return e2err_RICActionDefinitionChoicePackFail_2; - } - else - if (debug) - sprintf(pLogBuffer,"Successfully encoded %s. Buffer size %zu, encoded size %zu",asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name, bufferSize, rval.encoded); - - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - - pRICActionDefinitionChoice->octetString.contentLength = rval.encoded; - return e2err_OK; -} ////////////////////////////////////////////////////////////////////// uint64_t packRICSubscriptionResponse(size_t* pDataBufferSize, byte* pDataBuffer, char* pLogBuffer, RICSubscriptionResponse_t* pRICSubscriptionResponse) { @@ -1450,7 +755,7 @@ e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t dataBufferSize, const byte* dataBuff } ////////////////////////////////////////////////////////////////////// -uint64_t getRICSubscriptionRequestData(mem_track_hdr_t * pDynMemHead, e2ap_pdu_ptr_t* pE2AP_PDU_pointer, RICSubscriptionRequest_t* pRICSubscriptionRequest) { +uint64_t getRICSubscriptionRequestData(e2ap_pdu_ptr_t* pE2AP_PDU_pointer, RICSubscriptionRequest_t* pRICSubscriptionRequest) { E2AP_PDU_t* pE2AP_PDU = (E2AP_PDU_t*)pE2AP_PDU_pointer; @@ -1491,23 +796,6 @@ uint64_t getRICSubscriptionRequestData(mem_track_hdr_t * pDynMemHead, e2ap_pdu_p pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.octetString.contentLength = pRICeventTriggerDefinition->size; memcpy(pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.octetString.data, pRICeventTriggerDefinition->buf, pRICeventTriggerDefinition->size); - // Workaroud to spec problem. E2AP spec does not specify what speck (gNB-X2 or gNB-NRT) should be used when decoded EventTriggerDefinition and ActionDefinition - // received received. Here we know that length of gNB-NRT EventTriggerDefinition octet string is always 1 at the moment. - if (pRICeventTriggerDefinition->size == 1) { - pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.E2SMgNBNRTEventTriggerDefinitionPresent = true; - pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.E2SMgNBX2EventTriggerDefinitionPresent = false; - } - else { - pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.E2SMgNBNRTEventTriggerDefinitionPresent = false; - pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition.E2SMgNBX2EventTriggerDefinitionPresent = true; - } - - uint64_t returnCode; - if ((returnCode = getRICEventTriggerDefinitionData(&pRICSubscriptionRequest->ricSubscriptionDetails.ricEventTriggerDefinition)) != e2err_OK) { - ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU); - return returnCode; - } - // RICactions-ToBeSetup-List RICaction_ToBeSetup_ItemIEs_t* pRICaction_ToBeSetup_ItemIEs; uint64_t index = 0; @@ -1532,18 +820,7 @@ uint64_t getRICSubscriptionRequestData(mem_track_hdr_t * pDynMemHead, e2ap_pdu_p pRICaction_ToBeSetup_ItemIEs->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition->buf, pRICaction_ToBeSetup_ItemIEs->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition->size); - // Workaroud to spec problem. E2AP spec does not specify what speck (gNB-X2 or gNB-NRT) should be used when decoded EventTriggerDefinition and ActionDefinition - // received received. Here we know that length of gNB-NRT EventTriggerDefinition octet string is always 1 at the moment. - if (pRICeventTriggerDefinition->size == 1) - pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionNRTFormat1Present = true; - else - pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionNRTFormat1Present = false; - pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent = true; - if ((returnCode = getRICActionDefinitionData(pDynMemHead, &pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice)) != e2err_OK) { - ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pE2AP_PDU); - return returnCode; - } } else pRICSubscriptionRequest->ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent = false; @@ -1574,536 +851,9 @@ uint64_t getRICSubscriptionRequestData(mem_track_hdr_t * pDynMemHead, e2ap_pdu_p return e2err_OK; } -////////////////////////////////////////////////////////////////////// -uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t* pRICEventTriggerDefinition) { - - if (pRICEventTriggerDefinition->E2SMgNBX2EventTriggerDefinitionPresent) - return getRICEventTriggerDefinitionDataX2Format(pRICEventTriggerDefinition); - else if (pRICEventTriggerDefinition->E2SMgNBNRTEventTriggerDefinitionPresent) - return getRICEventTriggerDefinitionDataNRTFormat(pRICEventTriggerDefinition); - else - return e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail; -} - -////////////////////////////////////////////////////////////////////// -uint64_t getRICEventTriggerDefinitionDataX2Format(RICEventTriggerDefinition_t* pRICEventTriggerDefinition) { - - E2_E2SM_gNB_X2_eventTriggerDefinition_t* pE2SM_gNB_X2_eventTriggerDefinition = 0; - asn_dec_rval_t rval; - rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, (void **)&pE2SM_gNB_X2_eventTriggerDefinition, - pRICEventTriggerDefinition->octetString.data, pRICEventTriggerDefinition->octetString.contentLength); - switch(rval.code) { - case RC_OK: - // Debug print - if (debug) { - printf("Successfully decoded E2SM_gNB_X2_eventTriggerDefinition\n"); - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - } - - // InterfaceID, GlobalENB-ID or GlobalGNB-ID - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.present == E2_Interface_ID_PR_global_eNB_ID) { - - // GlobalENB-ID - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent = true; - - // PLMN-Identity - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength = - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.size; - memcpy(pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal, - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.buf, - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength); - - // ENB-ID - IdOctects_t eNBOctects; - memset(eNBOctects.octets, 0, sizeof(eNBOctects)); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present == E2_ENB_ID_PR_macro_eNB_ID) { - // BIT STRING, SIZE 20 - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits = cMacroENBIDP_20Bits; - memcpy(eNBOctects.octets,pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.buf, - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.macro_eNB_ID.size); - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID = eNBOctects.nodeID; - } - else if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present == E2_ENB_ID_PR_home_eNB_ID) { - // BIT STRING, SIZE 28 - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits = cHomeENBID_28Bits; - memcpy(eNBOctects.octets,pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.buf, - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.home_eNB_ID.size); - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID = eNBOctects.nodeID; - } - else if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present == E2_ENB_ID_PR_short_Macro_eNB_ID) { - // BIT STRING, SIZE 18 - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits = cShortMacroENBID_18Bits; - memcpy(eNBOctects.octets,pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.buf, - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID.size); - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID = eNBOctects.nodeID; - } - else if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.present == E2_ENB_ID_PR_long_Macro_eNB_ID) { - // BIT STRING, SIZE 21 - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits = clongMacroENBIDP_21Bits; - memcpy(eNBOctects.octets,pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.buf, - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID.size); - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID = eNBOctects.nodeID; - } - else { - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent = false; - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent = false; - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - return e2err_RICEventTriggerDefinitionIEValueFail_5; - } - } - else if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.present == E2_Interface_ID_PR_global_gNB_ID) { - // GlobalGNB-ID - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent = true; - - // PLMN-Identity - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength = - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.size; - memcpy(pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal, - pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_eNB_ID.pLMN_Identity.buf, - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength); - - // GNB-ID - IdOctects_t gNBOctects; - memset(gNBOctects.octets, 0, sizeof(gNBOctects)); - if (pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.present == E2_GNB_ID_PR_gNB_ID) { - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.bits = pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.choice.gNB_ID.size; - memcpy(gNBOctects.octets, pE2SM_gNB_X2_eventTriggerDefinition->interface_ID.choice.global_gNB_ID.gNB_ID.choice.gNB_ID.buf, - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.bits); - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.nodeID = gNBOctects.nodeID; - } - else { - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent = false; - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent = false; - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - return e2err_RICEventTriggerDefinitionIEValueFail_6; - } - } - else { - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent = false; - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent = false; - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - return e2err_RICEventTriggerDefinitionIEValueFail_7; - } - - // InterfaceDirection - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceDirection = pE2SM_gNB_X2_eventTriggerDefinition->interfaceDirection; - - // InterfaceMessageType - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.procedureCode = pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.procedureCode; - - if (pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.typeOfMessage == E2_TypeOfMessage_initiating_message) - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage = cE2InitiatingMessage; - else if (pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.typeOfMessage == E2_TypeOfMessage_successful_outcome) - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage = cE2SuccessfulOutcome; - else if (pE2SM_gNB_X2_eventTriggerDefinition->interfaceMessageType.typeOfMessage == E2_TypeOfMessage_unsuccessful_outcome) - pRICEventTriggerDefinition->e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage = cE2UnsuccessfulOutcome; - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - return e2err_RICEventTriggerDefinitionIEValueFail_8; - } - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition, pE2SM_gNB_X2_eventTriggerDefinition); - return e2err_OK; - case RC_WMORE: - if (debug) - printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition.name, rval.consumed); - - return e2err_RICEventTriggerDefinitionDecodeWMOREFail; - case RC_FAIL: - if (debug) - printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_X2_eventTriggerDefinition.name, rval.consumed); - return e2err_RICEventTriggerDefinitionDecodeFAIL; - default: - return e2err_RICEventTriggerDefinitionDecodeDefaultFail; - } -} - -////////////////////////////////////////////////////////////////////// -uint64_t getRICEventTriggerDefinitionDataNRTFormat(RICEventTriggerDefinition_t* pRICEventTriggerDefinition) { - - E2_E2SM_gNB_NRT_EventTriggerDefinition_t* pE2_E2SM_gNB_NRT_EventTriggerDefinition = 0; - asn_dec_rval_t rval; - rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, (void **)&pE2_E2SM_gNB_NRT_EventTriggerDefinition, - pRICEventTriggerDefinition->octetString.data, pRICEventTriggerDefinition->octetString.contentLength); - switch(rval.code) { - case RC_OK: - // Debug print - if (debug) { - printf("Successfully decoded E2SM_gNB_X2_eventTriggerDefinition\n"); - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition); - } - - // NRT-TriggerNature - if (pE2_E2SM_gNB_NRT_EventTriggerDefinition->present == E2_E2SM_gNB_NRT_EventTriggerDefinition_PR_eventDefinition_Format1) { - pRICEventTriggerDefinition->E2SMgNBNRTEventTriggerDefinitionPresent = true; - pRICEventTriggerDefinition->e2SMgNBNRTEventTriggerDefinition.eventDefinitionFormat1.triggerNature = - pE2_E2SM_gNB_NRT_EventTriggerDefinition->choice.eventDefinition_Format1.triggerNature; - } - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition); - return e2err_OK; - case RC_WMORE: - if (debug) - printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name, rval.consumed); - - return e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail; - case RC_FAIL: - if (debug) - printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name, rval.consumed); - return e2err_RICNRTEventTriggerDefinitionDecodeFAIL; - default: - return e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail; - } -} - -////////////////////////////////////////////////////////////////////// -uint64_t getRICActionDefinitionData(mem_track_hdr_t *pDynMemHead, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) { - - if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present) - return getRICActionDefinitionDataNRTFormat(pDynMemHead, pRICActionDefinitionChoice); -// if (pRICActionDefinitionChoice->actionDefinitionX2Format1Present || pRICActionDefinitionChoice->actionDefinitionX2Format2Present) - else - return getRICActionDefinitionDataX2Format(pDynMemHead, pRICActionDefinitionChoice); -// else -// return e2err_RICActionDefinitionChoiceEmptyFAIL; -} - -////////////////////////////////////////////////////////////////////// -uint64_t getRICActionDefinitionDataX2Format(mem_track_hdr_t* pDynMemHead, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) { - - E2_E2SM_gNB_X2_ActionDefinitionChoice_t* pE2_E2SM_gNB_X2_ActionDefinitionChoice = 0; - asn_dec_rval_t rval; - rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, (void **)&pE2_E2SM_gNB_X2_ActionDefinitionChoice, - pRICActionDefinitionChoice->octetString.data, pRICActionDefinitionChoice->octetString.contentLength); - switch(rval.code) { - case RC_OK: - // Debug print - if (debug) { - printf("Successfully decoded E2SM_gNB_X2_ActionDefinitionChoice\n"); - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - } - // ActionDefinitionChoice - if (pE2_E2SM_gNB_X2_ActionDefinitionChoice->present == E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format1) { - - // E2SM-gNB-X2-actionDefinition - uint64_t status; - if ((status = allocActionDefinitionX2Format1(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1)) != e2err_OK) - return status; - pRICActionDefinitionChoice->actionDefinitionX2Format1Present = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2Present = false; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present = false; - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterCount = 0; - pRICActionDefinitionChoice->actionDefinitionX2Format1->styleID = pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.style_ID; - - uint64_t index = 0; - if (pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List) { - while (index < pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List->list.count) { - E2_ActionParameter_Item_t* pE2_ActionParameter_Item = pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List->list.array[index]; - if (pE2_ActionParameter_Item) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].parameterID = pE2_ActionParameter_Item->actionParameter_ID; - if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueInt) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueIntPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueInt = - pE2_ActionParameter_Item->actionParameter_Value.choice.valueInt; - } - else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueEnum) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueEnumPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueIntPresent = - pE2_ActionParameter_Item->actionParameter_Value.choice.valueEnum; - } - else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueBool) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBoolPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBool = - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBool; - } - else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueBitS) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitSPresent = true; - addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS, - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.size, - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.buf, - pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.bits_unused); - } - else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueOctS) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctS, - pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.size, - pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.buf); - } - else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valuePrtS) { - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtS, - pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.size, - pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.buf); - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_RICSubscriptionRequestActionParameterItemFail; - } - } - index++; - } - } - pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterCount = index; - } - else if (pE2_E2SM_gNB_X2_ActionDefinitionChoice->present == E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format2) { - - // E2SM-gNB-X2-ActionDefinition-Format2 - uint64_t status; - if ((status = allocActionDefinitionX2Format2(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2)) != e2err_OK) - return status; - - pRICActionDefinitionChoice->actionDefinitionX2Format2Present = true; - pRICActionDefinitionChoice->actionDefinitionX2Format1Present = false; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present = false; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupCount = 0; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem->ranUEgroupDefinition.ranUeGroupDefCount = 0; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem->ranPolicy.ranParameterCount = 0; - - E2_E2SM_gNB_X2_ActionDefinition_Format2_t* pE2SM_gNB_X2_actionDefinition = &pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format2; - if(pE2SM_gNB_X2_actionDefinition) { - uint64_t index = 0; - if (pE2SM_gNB_X2_actionDefinition->ranUEgroup_List) { - while (index < pE2SM_gNB_X2_actionDefinition->ranUEgroup_List->list.count) { - E2_RANueGroup_Item_t* pE2_RANueGroup_Item = pE2SM_gNB_X2_actionDefinition->ranUEgroup_List->list.array[index]; - if (pE2_RANueGroup_Item) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupID = pE2_RANueGroup_Item->ranUEgroupID; - uint64_t index2 = 0; - while (index2 < pE2_RANueGroup_Item->ranUEgroupDefinition.ranUEgroupDef_List->list.count) { - E2_RANueGroupDef_Item_t* pE2_RANueGroupDef_Item = pE2_RANueGroup_Item->ranUEgroupDefinition.ranUEgroupDef_List->list.array[index2]; - if(pE2_RANueGroupDef_Item) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterID = pE2_RANueGroupDef_Item->ranParameter_ID; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterTest = pE2_RANueGroupDef_Item->ranParameter_Test; - if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueInt) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueIntPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueInt = - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueInt; - } - else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueEnum) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueEnum = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueEnum = - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueEnum; - } - else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBool) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBoolPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBool = - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBool; - } - else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBitS) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitSPresent = true; - addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.size, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.buf, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.bits_unused); - } - else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueOctS) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctS, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.size, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.buf); - } - else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valuePrtS) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtS, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.size, - pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.buf); - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail; - } - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail; - } - index2++; - } - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefCount = index2; - - uint64_t index3 = 0; - while (index3 < pE2_RANueGroup_Item->ranPolicy.ranImperativePolicy_List->list.count) { - E2_RANParameter_Item_t* pE2_RANParameter_Item = pE2_RANueGroup_Item->ranPolicy.ranImperativePolicy_List->list.array[index3]; - if (pE2_RANParameter_Item) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterID = pE2_RANParameter_Item->ranParameter_ID; - if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueInt) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueIntPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueInt = - pE2_RANParameter_Item->ranParameter_Value.choice.valueInt; - } - else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueEnum) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueEnum = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueEnum = - pE2_RANParameter_Item->ranParameter_Value.choice.valueEnum; - } - else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBool) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBoolPresent = true; - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBool = - pE2_RANParameter_Item->ranParameter_Value.choice.valueBool; - } - else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBitS) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitSPresent = true; - addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS, - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.size, - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf, - pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.bits_unused); - } - else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueOctS) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctS, - pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.size, - pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf); - } - else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valuePrtS) { - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtS, - pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.size, - pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf); - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail; - } - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_RICSubscriptionRequestAllocActionDefinitionFail; - } - index3++; - } - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterCount = index3; - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_RICSubscriptionRequestAllocRANParameter_ItemFail; - } - index++; - } - } - pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupCount = index; - } - } - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice); - return e2err_OK; - case RC_WMORE: - if (debug) - printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name, rval.consumed); - - return e2err_RICActionDefinitionChoiceWMOREFail; - case RC_FAIL: - if (debug) - printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name, rval.consumed); - - return e2err_RICActionDefinitionChoiceDecodeFAIL; - default: - return e2err_RICActionDefinitionChoiceDecodeDefaultFail; - } -} ////////////////////////////////////////////////////////////////////// -uint64_t getRICActionDefinitionDataNRTFormat(mem_track_hdr_t* pDynMemHead, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) { - E2_E2SM_gNB_NRT_ActionDefinition_t* pE2_E2SM_gNB_NRT_ActionDefinition = 0; - asn_dec_rval_t rval; - rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, (void **)&pE2_E2SM_gNB_NRT_ActionDefinition, - pRICActionDefinitionChoice->octetString.data, pRICActionDefinitionChoice->octetString.contentLength); - switch(rval.code) { - case RC_OK: - // Debug print - if (debug) { - printf("Successfully decoded E2SM_gNB_NRT_ActionDefinition\n"); - asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - } - - // ActionDefinitionChoice - if (pE2_E2SM_gNB_NRT_ActionDefinition->present == E2_E2SM_gNB_NRT_ActionDefinition_PR_actionDefinition_Format1) { - - // E2SM-gNB-NRT-actionDefinition - uint64_t status; - if ((status = allocActionDefinitionNRTFormat1(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1)) != e2err_OK) - return status; - - pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present = true; - pRICActionDefinitionChoice->actionDefinitionX2Format1Present = false; - pRICActionDefinitionChoice->actionDefinitionX2Format2Present = false; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = 0; - if (pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List) { - uint64_t index = 0; - while (index < pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.count) { - E2_RANparameter_Item_t* pE2_RANparameter_Item = pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.array[index]; - if (pE2_RANparameter_Item) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterID = pE2_RANparameter_Item->ranParameter_ID; - - if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueInt) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueIntPresent = true; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueInt = - pE2_RANparameter_Item->ranParameter_Value.choice.valueInt; - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueEnum) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnumPresent = true; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnum = - pE2_RANparameter_Item->ranParameter_Value.choice.valueEnum; - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBool) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBoolPresent = true; - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBool = - pE2_RANparameter_Item->ranParameter_Value.choice.valueBool; - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBitS) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitSPresent = true; - addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS, - pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.size, - pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.buf, - pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.bits_unused); - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueOctS) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS, - pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.size, - pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.buf); - } - else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valuePrtS) { - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtSPresent = true; - addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS, - pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.size, - pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.buf); - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - return e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail; - } - } - else { - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - return e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail; - } - index++; - } - pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = index; - } - } - ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition); - return e2err_OK; - case RC_WMORE: - if (debug) - printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name, rval.consumed); - - return e2err_RICNRTActionDefinitionChoiceWMOREFail; - case RC_FAIL: - if (debug) - printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength, - asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name, rval.consumed); - - return e2err_RICNRTActionDefinitionChoiceDecodeFAIL; - default: - return e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail; - } -} -////////////////////////////////////////////////////////////////////// uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t* pE2AP_PDU_pointer, RICSubscriptionResponse_t* pRICSubscriptionResponse) { E2AP_PDU_t* pE2AP_PDU = (E2AP_PDU_t*)pE2AP_PDU_pointer; @@ -2435,91 +1185,3 @@ uint64_t getRICSubscriptionDeleteFailureData(e2ap_pdu_ptr_t* pE2AP_PDU_pointer, return e2err_OK; } -////////////////////////////////////////////////////////////////////// -uint64_t allocActionDefinitionX2Format1(mem_track_hdr_t* pDynMemHead, E2SMgNBX2actionDefinition_t** pActionDefinition) { - *pActionDefinition = mem_track_alloc(pDynMemHead, sizeof(E2SMgNBX2actionDefinition_t)); - if(*pActionDefinition) - return e2err_OK; - else - return e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail; -} - -////////////////////////////////////////////////////////////////////// -uint64_t allocActionDefinitionX2Format2(mem_track_hdr_t* pDynMemHead, E2SMgNBX2ActionDefinitionFormat2_t** pActionDefinition) { - *pActionDefinition = mem_track_alloc(pDynMemHead, sizeof(E2SMgNBX2ActionDefinitionFormat2_t)); - if(*pActionDefinition) - return e2err_OK; - else - return e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail; -} - -////////////////////////////////////////////////////////////////////// -uint64_t allocActionDefinitionNRTFormat1(mem_track_hdr_t* pDynMemHead, E2SMgNBNRTActionDefinitionFormat1_t** pActionDefinition) { - *pActionDefinition = mem_track_alloc(pDynMemHead, sizeof(E2SMgNBNRTActionDefinitionFormat1_t)); - if(*pActionDefinition) - return e2err_OK; - else - return e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail; -} - -////////////////////////////////////////////////////////////////////// -bool addOctetString(mem_track_hdr_t* pDynMemHead, DynOctetString_t* pOctetString, uint64_t bufferSize, void* pData) -{ - pOctetString->data = mem_track_alloc(pDynMemHead, bufferSize); - if (pOctetString->data) { - pOctetString->length = bufferSize; - memcpy(pOctetString->data,pData,bufferSize); - return true; - } - else - return false; -} - -////////////////////////////////////////////////////////////////////// -bool addBitString(mem_track_hdr_t* pDynMemHead, DynBitString_t* pBitString, uint64_t bufferSize, void* pData, uint8_t unusedBits) -{ - pBitString->data = mem_track_alloc(pDynMemHead, bufferSize); - if (pBitString->data) { - pBitString->byteLength = bufferSize; - pBitString->unusedBits = unusedBits; // Unused trailing bits in the last octet (0..7) - memcpy(pBitString->data,pData,bufferSize); - return true; - } - else - return false; -} - -////////////////////////////////////////////////////////////////////// -void mem_track_init(mem_track_hdr_t *curr) -{ - *curr=(mem_track_hdr_t)MEM_TRACK_HDR_INIT; -} - -////////////////////////////////////////////////////////////////////// -void* mem_track_alloc(mem_track_hdr_t *curr, size_t sz) -{ - mem_track_t *newentry = (mem_track_t *)malloc(sizeof(mem_track_t)+sz); - newentry->next=0; - newentry->sz=sz; - memset(newentry->ptr,0,newentry->sz); - - if (!curr->next) { - curr->next = newentry; - } else { - mem_track_t *iter=curr->next; - for(;iter->next;iter=iter->next); - iter->next = newentry; - } - return newentry->ptr; -} - -////////////////////////////////////////////////////////////////////// -void mem_track_free(mem_track_hdr_t *curr) -{ - mem_track_t *itecurr,*itenext; - for(itecurr=curr->next; itecurr; itecurr=itenext){ - itenext = itecurr->next; - free(itecurr); - } - mem_track_init(curr); -} diff --git a/e2ap/libe2ap_wrapper/E2AP_if.h b/e2ap/libe2ap_wrapper/E2AP_if.h index 2ccea5b..aab8aaa 100644 --- a/e2ap/libe2ap_wrapper/E2AP_if.h +++ b/e2ap/libe2ap_wrapper/E2AP_if.h @@ -27,8 +27,6 @@ #include #include #include -#include -#include "memtrack.h" #ifdef __cplusplus extern "C" { @@ -77,113 +75,14 @@ enum RICActionType_t { RICActionType_policy }; -typedef uint64_t StyleID_t; - -typedef uint32_t ParameterID_t; // 0..255 (maxofActionParameters) - -typedef struct { // CHOICE. Only one value can be present - bool valueIntPresent; - int64_t valueInt; - bool valueEnumPresent; - int64_t valueEnum; - bool valueBoolPresent; - bool valueBool; - bool valueBitSPresent; - DynBitString_t valueBitS; - bool valueOctSPresent; - DynOctetString_t valueOctS; - bool valuePrtSPresent; - DynOctetString_t valuePrtS; -} ActionParameterValue_t; - -typedef struct { - ParameterID_t parameterID; - ActionParameterValue_t actionParameterValue; -} ActionParameterItem_t; - -typedef struct { - StyleID_t styleID; - uint8_t actionParameterCount; - ActionParameterItem_t actionParameterItem[255]; // OPTIONAL. 1..255 (maxofRANParameters) -} E2SMgNBX2actionDefinition_t; - -enum RANParameterTest_t { - RANParameterTest_equal, - RANParameterTest_greaterthan, - RANParameterTest_lessthan, - RANParameterTest_contains, - RANParameterTest_present -}; - -typedef struct { - bool valueIntPresent; - int64_t valueInt; - bool valueEnumPresent; - int64_t valueEnum; - bool valueBoolPresent; - bool valueBool; - bool valueBitSPresent; - DynBitString_t valueBitS; - bool valueOctSPresent; - DynOctetString_t valueOctS; - bool valuePrtSPresent; - DynOctetString_t valuePrtS; -} RANParameterValue_t; - -typedef int64_t RANueGroupID_t; // INTEGER -typedef uint32_t RANParameterID_t; // 0..255 (maxofRANParameters) - -typedef struct { - RANParameterID_t ranParameterID; - RANParameterValue_t ranParameterValue; -} RANParameterItem_t; - -typedef struct { - RANParameterID_t ranParameterID; - uint8_t ranParameterTest; // This is type of enum RANParameterTest_t - RANParameterValue_t ranParameterValue; -} RANueGroupDefItem_t; - -typedef struct { - uint8_t ranUeGroupDefCount; - RANueGroupDefItem_t ranUeGroupDefItem[255]; //OPTIONAL. 1..255 (maxofRANParameters) -} RANueGroupDefinition_t; - -typedef struct { - uint8_t ranParameterCount; - RANParameterItem_t ranParameterItem[255]; //OPTIONAL. 1..255 (maxofRANParameters) -} RANimperativePolicy_t; - -typedef struct { - RANueGroupID_t ranUEgroupID; - RANueGroupDefinition_t ranUEgroupDefinition; - RANimperativePolicy_t ranPolicy; -} RANueGroupItem_t; - -typedef struct { - uint8_t ranUeGroupCount; - RANueGroupItem_t ranUeGroupItem[15]; // OPTIONAL. 1..15 (maxofUEgroup) -} E2SMgNBX2ActionDefinitionFormat2_t; enum RICSubsequentActionType_t { RICSubsequentActionType_Continue, RICSubsequentActionType_wait }; -typedef struct { - uint8_t ranParameterCount; - RANParameterItem_t ranParameterList[255]; // OPTIONAL. 1..255 (maxofRANParameters) -} E2SMgNBNRTActionDefinitionFormat1_t; - typedef struct { OctetString_t octetString; // This element is E2AP spec format - // CHOICE. Only one value can be present - bool actionDefinitionX2Format1Present; - E2SMgNBX2actionDefinition_t* actionDefinitionX2Format1; // This element is E2SM-gNB-X2 format - bool actionDefinitionX2Format2Present; - E2SMgNBX2ActionDefinitionFormat2_t* actionDefinitionX2Format2; // This element is E2SM-gNB-X2 format - bool actionDefinitionNRTFormat1Present; - E2SMgNBNRTActionDefinitionFormat1_t* actionDefinitionNRTFormat1; // This element is E2SM-gNB-NRT format } RICActionDefinitionChoice_t; enum RICTimeToWait_t { @@ -263,81 +162,11 @@ enum InterfaceDirection__t { typedef uint8_t ProcedureCode__t; -enum TypeOfMessage_t { - TypeOfMessage_nothing, - TypeOfMessage_InitiatingMessage, - TypeOfMessage_SuccessfulOutcome, - TypeOfMessage_UnsuccessfulOutcome -}; - -typedef struct { - ProcedureCode__t procedureCode; - uint8_t typeOfMessage; // This is type of enum TypeOfMessage_t -} InterfaceMessageType_t; - -typedef uint32_t InterfaceProtocolIEID_t; - -enum InterfaceProtocolIETest_t { - ProtocolIEtestCondition_equal, - ProtocolIEtestCondition_greaterthan, - ProtocolIEtestCondition_lessthan, - ProtocolIEtestCondition_contains, - ProtocolIEtestCondition_present -}; - -typedef struct { // CHOICE. Only one value can be present - bool valueIntPresent; - int64_t valueInt; - bool valueEnumPresent; - int64_t valueEnum; - bool valueBoolPresent; - bool valueBool; - bool valueBitStringPresent; - DynBitString_t valueBitString; - bool octetstringPresent; - DynOctetString_t octetString; -} InterfaceProtocolIEValue_t; - -typedef struct { - InterfaceProtocolIEID_t interfaceProtocolIEID; - uint8_t interfaceProtocolIETest; // This is type of enum InterfaceProtocolIETest_t - InterfaceProtocolIEValue_t interfaceProtocolIEValue; -} InterfacProtocolIE_t; static const uint64_t cMaxofProtocolIE = 15; -typedef struct { - InterfacProtocolIE_t InterfacProtocolIE[15]; // Table size is const cMaxofProtocolIE -} InterfaceProtocolIEList_t; - -typedef struct { - InterfaceID_t interfaceID; - uint8_t interfaceDirection; // This is type of enum InterfaceDirection_t - InterfaceMessageType_t interfaceMessageType; - bool interfaceProtocolIEListPresent; - InterfaceProtocolIEList_t interfaceProtocolIEList; // OPTIONAL. Not used in RIC currently -} E2SMgNBX2eventTriggerDefinition_t; - -enum NRTTriggerNature_t { - NRTTriggerNature_t_now, - NRTTriggerNature_t_onchange -}; - -typedef struct { - uint8_t triggerNature; // This is type of enum NRTTriggerNature_t -} E2SMgNBNRTEventTriggerDefinitionFormat1_t; - -typedef struct { - E2SMgNBNRTEventTriggerDefinitionFormat1_t eventDefinitionFormat1; -} E2SMgNBNRTEventTriggerDefinition_t; - typedef struct { OctetString_t octetString; // This element is E2AP spec format - // CHOICE. Only one value can be present. - bool E2SMgNBX2EventTriggerDefinitionPresent; - E2SMgNBX2eventTriggerDefinition_t e2SMgNBX2eventTriggerDefinition; // This element is E2SM-gNB-X2 spec format - bool E2SMgNBNRTEventTriggerDefinitionPresent; - E2SMgNBNRTEventTriggerDefinition_t e2SMgNBNRTEventTriggerDefinition; // This element is E2SM-gNB-NRT spec format } RICEventTriggerDefinition_t; typedef struct { @@ -424,78 +253,12 @@ enum e2err { e2err_RICSubscriptionRequestAllocRANfunctionIDFail, e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail, e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail, - e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail, - e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail, - e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail, - e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail, - e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail, - e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail, - e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail, - e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail, - e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail, - e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail, - e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail, - e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail, e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail, e2err_RICSubscriptionRequestAllocRICactionDefinitionFail, - e2err_RICSubscriptionRequestRICActionDefinitionEmpty, - e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition, - e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition, - e2err_RICSubscriptionRequestActionParameterItemFail, - e2err_RICActionDefinitionChoicePackFail_1, - e2err_RICActionDefinitionChoicePackFail_2, - e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail, - e2err_RICSubscriptionRequestAllocRANParameter_ItemFail, - e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail, - e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail, - e2err_RICSubscriptionRequestAllocActionDefinitionFail, - e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail, - e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail, - e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail, - e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail, - e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail, - e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail, - e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail, - e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail, - e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail, - e2err_RICActionDefinitionChoiceWMOREFail, - e2err_RICActionDefinitionChoiceDecodeFAIL, - e2err_RICActionDefinitionChoiceDecodeDefaultFail, - e2err_RICNRTActionDefinitionChoiceWMOREFail, - e2err_RICNRTActionDefinitionChoiceDecodeFAIL, - e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail, - e2err_RICActionDefinitionChoiceEmptyFAIL, - e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail, - e2err_RICNRTEventTriggerDefinitionDecodeFAIL, - e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail, - e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail, - e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail, - e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFormat1Fail, - e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail, - e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail, - e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail, e2err_RICSubscriptionRequestAllocRICsubsequentActionFail, e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail, e2err_RICSubscriptionRequestEncodeFail, e2err_RICSubscriptionRequestAllocE2AP_PDUFail, - e2err_RICEventTriggerDefinitionIEValueFail_1, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail, - e2err_RICEventTriggerDefinitionIEValueFail_2, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail, - e2err_RICEventTriggerDefinitionIEValueFail_3, - e2err_RICEventTriggerDefinitionIEValueFail_4, - e2err_RICEventTriggerDefinitionPackFail_1, - e2err_RICEventTriggerDefinitionPackFail_2, - e2err_RICENRTventTriggerDefinitionPackFail_1, - e2err_RICNRTEventTriggerDefinitionPackFail_2, - e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail, - e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail, - e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail, e2err_RICSubscriptionResponseAllocRICrequestIDFail, e2err_RICSubscriptionResponseAllocRANfunctionIDFail, e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail, @@ -509,7 +272,6 @@ enum e2err { e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail, e2err_RICSubscriptionFailureEncodeFail, e2err_RICSubscriptionFailureAllocE2AP_PDUFail, - e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail, e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail, e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail, e2err_RICSubscriptionDeleteRequestEncodeFail, @@ -526,22 +288,12 @@ enum e2err { e2err_RICsubscriptionRequestRICrequestIDMissing, e2err_RICsubscriptionRequestRANfunctionIDMissing, e2err_RICsubscriptionRequestICsubscriptionMissing, - e2err_RICEventTriggerDefinitionIEValueFail_5, - e2err_RICEventTriggerDefinitionIEValueFail_6, - e2err_RICEventTriggerDefinitionIEValueFail_7, - e2err_RICEventTriggerDefinitionIEValueFail_8, - e2err_RICEventTriggerDefinitionDecodeWMOREFail, - e2err_RICEventTriggerDefinitionDecodeFAIL, - e2err_RICEventTriggerDefinitionDecodeDefaultFail, e2err_RICsubscriptionResponseRICrequestIDMissing, e2err_RICsubscriptionResponseRANfunctionIDMissing, e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing, e2err_RICsubscriptionFailureRICrequestIDMissing, e2err_RICsubscriptionFailureRANfunctionIDMissing, e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing, - e2err_RICEventTriggerDefinitionIEValueFail_9, - e2err_RICEventTriggerDefinitionIEValueFail_10, - e2err_RICEventTriggerDefinitionIEValueFail_11, e2err_RICsubscriptionDeleteRequestRICrequestIDMissing, e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing, e2err_RICsubscriptionDeleteResponseRICrequestIDMissing, @@ -557,78 +309,12 @@ static const char* const E2ErrorStrings[] = { "e2err_RICSubscriptionRequestAllocRANfunctionIDFail", "e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail", "e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail", - "e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail", - "e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail", - "e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail", - "e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail", - "e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail", - "e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail", - "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail", - "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail", - "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail", - "e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail", - "e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail", - "e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail", "e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail", "e2err_RICSubscriptionRequestAllocRICactionDefinitionFail", - "e2err_RICSubscriptionRequestRICActionDefinitionEmpty", - "e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition", - "e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition", - "e2err_RICSubscriptionRequestActionParameterItemFail", - "e2err_RICActionDefinitionChoicePackFail_1", - "e2err_RICActionDefinitionChoicePackFail_2", - "e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail", - "e2err_RICSubscriptionRequestAllocRANParameter_ItemFail", - "e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail", - "e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail", - "e2err_RICSubscriptionRequestAllocActionDefinitionFail", - "e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail", - "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail", - "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail", - "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail", - "e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail", - "e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail", - "e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail", - "e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail", - "e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail", - "e2err_RICActionDefinitionChoiceWMOREFail", - "e2err_RICActionDefinitionChoiceDecodeFAIL", - "e2err_RICActionDefinitionChoiceDecodeDefaultFail", - "e2err_RICNRTActionDefinitionChoiceWMOREFail", - "e2err_RICNRTActionDefinitionChoiceDecodeFAIL", - "e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail", - "e2err_RICActionDefinitionChoiceEmptyFAIL", - "e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail", - "e2err_RICNRTEventTriggerDefinitionDecodeFAIL", - "e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail", - "e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail", - "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail", - "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFormat1Fail", - "e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail", - "e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail", - "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail", "e2err_RICSubscriptionRequestAllocRICsubsequentActionFail", "e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail", "e2err_RICSubscriptionRequestEncodeFail", "e2err_RICSubscriptionRequestAllocE2AP_PDUFail", - "e2err_RICEventTriggerDefinitionIEValueFail_1", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail", - "e2err_RICEventTriggerDefinitionIEValueFail_2", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail", - "e2err_RICEventTriggerDefinitionIEValueFail_3", - "e2err_RICEventTriggerDefinitionIEValueFail_4", - "e2err_RICEventTriggerDefinitionPackFail_1", - "e2err_RICEventTriggerDefinitionPackFail_2", - "e2err_RICENRTventTriggerDefinitionPackFail_1", - "e2err_RICNRTEventTriggerDefinitionPackFail_2", - "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail", - "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail", - "e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail", "e2err_RICSubscriptionResponseAllocRICrequestIDFail", "e2err_RICSubscriptionResponseAllocRANfunctionIDFail", "e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail", @@ -642,7 +328,6 @@ static const char* const E2ErrorStrings[] = { "e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail", "e2err_RICSubscriptionFailureEncodeFail", "e2err_RICSubscriptionFailureAllocE2AP_PDUFail", - "e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail", "e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail", "e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail", "e2err_RICSubscriptionDeleteRequestEncodeFail", @@ -659,22 +344,12 @@ static const char* const E2ErrorStrings[] = { "e2err_RICsubscriptionRequestRICrequestIDMissing", "e2err_RICsubscriptionRequestRANfunctionIDMissing", "e2err_RICsubscriptionRequestICsubscriptionMissing", - "e2err_RICEventTriggerDefinitionIEValueFail_5", - "e2err_RICEventTriggerDefinitionIEValueFail_6", - "e2err_RICEventTriggerDefinitionIEValueFail_7", - "e2err_RICEventTriggerDefinitionIEValueFail_8", - "e2err_RICEventTriggerDefinitionDecodeWMOREFail", - "e2err_RICEventTriggerDefinitionDecodeFAIL", - "e2err_RICEventTriggerDefinitionDecodeDefaultFail", "e2err_RICsubscriptionResponseRICrequestIDMissing", "e2err_RICsubscriptionResponseRANfunctionIDMissing", "e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing", "e2err_RICsubscriptionFailureRICrequestIDMissing", "e2err_RICsubscriptionFailureRANfunctionIDMissing", "e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing", - "e2err_RICEventTriggerDefinitionIEValueFail_9", - "e2err_RICEventTriggerDefinitionIEValueFail_10", - "e2err_RICEventTriggerDefinitionIEValueFail_11", "e2err_RICsubscriptionDeleteRequestRICrequestIDMissing", "e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing", "e2err_RICsubscriptionDeleteResponseRICrequestIDMissing", @@ -759,12 +434,6 @@ const char* getE2ErrorString(uint64_t); typedef void* e2ap_pdu_ptr_t; uint64_t packRICSubscriptionRequest(size_t*, byte*, char*,RICSubscriptionRequest_t*); -uint64_t packRICEventTriggerDefinition(char*,RICEventTriggerDefinition_t*); -uint64_t packRICActionDefinition(char*, RICActionDefinitionChoice_t*); -uint64_t packRICEventTriggerDefinitionX2Format(char* pLogBuffer, RICEventTriggerDefinition_t*); -uint64_t packRICEventTriggerDefinitionNRTFormat(char* pLogBuffer, RICEventTriggerDefinition_t*); -uint64_t packActionDefinitionX2Format(char*, RICActionDefinitionChoice_t*); -uint64_t packActionDefinitionNRTFormat(char*, RICActionDefinitionChoice_t*); uint64_t packRICSubscriptionResponse(size_t*, byte*, char*,RICSubscriptionResponse_t*); uint64_t packRICSubscriptionFailure(size_t*, byte*, char*,RICSubscriptionFailure_t*); uint64_t packRICSubscriptionDeleteRequest(size_t*, byte*, char*,RICSubscriptionDeleteRequest_t*); @@ -772,29 +441,13 @@ uint64_t packRICSubscriptionDeleteResponse(size_t*, byte*, char*,RICSubscription uint64_t packRICSubscriptionDeleteFailure(size_t*, byte*, char*,RICSubscriptionDeleteFailure_t*); e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t, const byte*, char*, E2MessageInfo_t*); -uint64_t getRICSubscriptionRequestData(mem_track_hdr_t *, e2ap_pdu_ptr_t*, RICSubscriptionRequest_t*); -uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t*); -uint64_t getRICEventTriggerDefinitionDataX2Format(RICEventTriggerDefinition_t*); -uint64_t getRICEventTriggerDefinitionDataNRTFormat(RICEventTriggerDefinition_t*); -uint64_t getRICActionDefinitionData(mem_track_hdr_t *, RICActionDefinitionChoice_t*); -uint64_t getRICActionDefinitionDataX2Format(mem_track_hdr_t*, RICActionDefinitionChoice_t*); -uint64_t getRICActionDefinitionDataNRTFormat(mem_track_hdr_t*, RICActionDefinitionChoice_t*); +uint64_t getRICSubscriptionRequestData(e2ap_pdu_ptr_t*, RICSubscriptionRequest_t*); uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t*, RICSubscriptionResponse_t*); uint64_t getRICSubscriptionFailureData(e2ap_pdu_ptr_t*, RICSubscriptionFailure_t*); uint64_t getRICSubscriptionDeleteRequestData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteRequest_t*); uint64_t getRICSubscriptionDeleteResponseData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteResponse_t*); uint64_t getRICSubscriptionDeleteFailureData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteFailure_t*); -void* allocDynMem(mem_track_hdr_t*, size_t); -bool addOctetString(mem_track_hdr_t *, DynOctetString_t*, uint64_t, void*); -bool addBitString(mem_track_hdr_t *, DynBitString_t*, uint64_t, void*, uint8_t); - -uint64_t allocActionDefinitionX2Format1(mem_track_hdr_t*, E2SMgNBX2actionDefinition_t**); -uint64_t allocActionDefinitionX2Format2(mem_track_hdr_t*, E2SMgNBX2ActionDefinitionFormat2_t**); -uint64_t allocActionDefinitionNRTFormat1(mem_track_hdr_t*, E2SMgNBNRTActionDefinitionFormat1_t**); - -uint64_t allocateOctetStringBuffer(DynOctetString_t*, uint64_t); -uint64_t allocateBitStringBuffer(mem_track_hdr_t *, DynBitString_t*, uint64_t); #if DEBUG bool TestRICSubscriptionRequest(); diff --git a/e2ap/libe2ap_wrapper/memtrack.h b/e2ap/libe2ap_wrapper/memtrack.h deleted file mode 100644 index 0ff1126..0000000 --- a/e2ap/libe2ap_wrapper/memtrack.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -================================================================================== - Copyright (c) 2019 AT&T Intellectual Property. - Copyright (c) 2019 Nokia - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================== -*/ - -#ifndef __MEMTRACK_H__ -#define __MEMTRACK_H__ - - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * - */ -typedef struct mem_track_s{ - struct mem_track_s *next; - size_t sz; - unsigned char ptr[]; -}mem_track_t; - - -/* - * - */ -typedef struct mem_track_hdr_s{ - struct mem_track_s *next; -}mem_track_hdr_t; - -#define MEM_TRACK_HDR_INIT {0} - - -/* - * - */ -void mem_track_init(mem_track_hdr_t *curr); - -void* mem_track_alloc(mem_track_hdr_t *curr, size_t sz); - -void mem_track_free(mem_track_hdr_t *curr); - - -/* - * - */ -#define MEM_TRACK_ALLOC(__hdr,__id) (__id*)mem_track_alloc(__hdr,sizeof(__id)) - -#define MEM_TRACK_ALLOC_LIST(__hdr,__id,__n) (__id**)mem_track_alloc(__hdr,sizeof(__id)*__n) - -#define MEM_TRACK_ALLOC_PTR_LIST(__hdr,__id,__n) (__id**)mem_track_alloc(__hdr,sizeof(__id*)*__n) - -#define MEM_TRACK_ALLOC_BUFFER(__hdr,__id,__n) (__id*)mem_track_alloc(__hdr,sizeof(__id)*__n) - -#define MEM_TRACK_ALLOC_INIT(__val, __hdr,__id,__init) __id* __val=MEM_TRACK_ALLOC(__hdr,__id); *__val=(__id)__init - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go b/e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go index fbb92e4..67a5858 100644 --- a/e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go +++ b/e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go @@ -50,6 +50,7 @@ func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequestWithData(t *testing.T, return } testCtxt.testPrint("print:\n%s", e2SubsReq.String()) + testCtxt.testValueEquality(t, "msg", areqenc, areqdec) testCtxt.testValueEquality(t, "EventTriggerDefinition", &areqenc.EventTriggerDefinition, &areqdec.EventTriggerDefinition) } @@ -60,41 +61,14 @@ func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequest(t *testing.T, msgConte areqenc.RequestId.InstanceId = 22 areqenc.FunctionId = 33 - areqenc.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent = msgContent.NBX2EventTriggerDefinitionPresent - areqenc.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent = msgContent.NBNRTEventTriggerDefinitionPresent - - if areqenc.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent { - //Bits 20, 28(works), 18, 21 (asn1 problems) - // if msgContent. - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150") - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28 - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 202251 - testCtxt.SetDesc("SubsReq-28bit") - - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150") - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDShortMacroits18 - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55 - //testCtxt.SetDesc("SubsReq-18bit") - - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150") - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDMacroPBits20 - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55 - //testCtxt.SetDesc("SubsReq-20bit") - - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150") - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDlongMacroBits21 - //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55 - //testCtxt.SetDesc("SubsReq-21bit") - - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.ProcedureCode = 35 - areqenc.EventTriggerDefinition.X2EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage - } else if areqenc.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent == true { - areqenc.EventTriggerDefinition.NBNRTEventTriggerDefinition.TriggerNature = e2ap.NRTTriggerNature_now + if msgContent.NBX2EventTriggerDefinitionPresent { + areqenc.EventTriggerDefinition.Data.Length = 1 + areqenc.EventTriggerDefinition.Data.Data = make([]uint8, areqenc.EventTriggerDefinition.Data.Length) + areqenc.EventTriggerDefinition.Data.Data[0] = 1 + } else if msgContent.NBNRTEventTriggerDefinitionPresent { + areqenc.EventTriggerDefinition.Data.Length = 1 + areqenc.EventTriggerDefinition.Data.Data = make([]uint8, areqenc.EventTriggerDefinition.Data.Length) + areqenc.EventTriggerDefinition.Data.Data[0] = 100 } for index := 0; index < 1; /*16*/ index++ { @@ -103,155 +77,20 @@ func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequest(t *testing.T, msgConte item.ActionType = e2ap.E2AP_ActionTypeInsert item.RicActionDefinitionPresent = true - item.ActionDefinitionChoice.ActionDefinitionX2Format1Present = msgContent.ActionDefinitionX2Format1Present - item.ActionDefinitionChoice.ActionDefinitionX2Format2Present = msgContent.ActionDefinitionX2Format2Present - item.ActionDefinitionChoice.ActionDefinitionNRTFormat1Present = msgContent.ActionDefinitionNRTFormat1Present if item.RicActionDefinitionPresent { - if item.ActionDefinitionChoice.ActionDefinitionX2Format1Present { - item.ActionDefinitionChoice.ActionDefinitionX2Format1.StyleID = 99 - // 1..255 - for index2 := 0; index2 < 1; index2++ { - actionParameterItem := e2ap.ActionParameterItem{} - actionParameterItem.ParameterID = 11 - if msgContent.ActionParameterValueIntPresent { - actionParameterItem.ActionParameterValue.ValueIntPresent = true - actionParameterItem.ActionParameterValue.ValueInt = 100 - } else if msgContent.ActionParameterValueEnumPresent { - actionParameterItem.ActionParameterValue.ValueEnumPresent = true - actionParameterItem.ActionParameterValue.ValueEnum = 100 - } else if msgContent.ActionParameterValueBoolPresent { - actionParameterItem.ActionParameterValue.ValueBoolPresent = true - actionParameterItem.ActionParameterValue.ValueBool = true - } else if msgContent.ActionParameterValueBitSPresent { - actionParameterItem.ActionParameterValue.ValueBitSPresent = true - actionParameterItem.ActionParameterValue.ValueBitS.UnusedBits = 0 - actionParameterItem.ActionParameterValue.ValueBitS.Length = 3 - actionParameterItem.ActionParameterValue.ValueBitS.Data = - append(actionParameterItem.ActionParameterValue.ValueBitS.Data, 1, 2, 3) - } else if msgContent.ActionParameterValueOctSPresent { - actionParameterItem.ActionParameterValue.ValueOctSPresent = true - actionParameterItem.ActionParameterValue.ValueOctS.Length = 3 - actionParameterItem.ActionParameterValue.ValueOctS.Data = - append(actionParameterItem.ActionParameterValue.ValueOctS.Data, 1, 2, 3) - } else if msgContent.ActionParameterValuePrtSPresent { - actionParameterItem.ActionParameterValue.ValuePrtSPresent = true - actionParameterItem.ActionParameterValue.ValuePrtS.Length = 3 - actionParameterItem.ActionParameterValue.ValuePrtS.Data = - append(actionParameterItem.ActionParameterValue.ValuePrtS.Data, 1, 2, 3) - } - item.ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems = - append(item.ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems, actionParameterItem) - } - } else if item.ActionDefinitionChoice.ActionDefinitionX2Format2Present { - // 1..15 - for index2 := 0; index2 < 1; index2++ { - ranUEgroupItem := e2ap.RANueGroupItem{} - // 1..255 - for index3 := 0; index3 < 1; index3++ { - ranUEGroupDefItem := e2ap.RANueGroupDefItem{} - ranUEGroupDefItem.RanParameterID = 22 - ranUEGroupDefItem.RanParameterTest = e2ap.RANParameterTest_equal - if msgContent.RANParameterValueIntPresent { - ranUEGroupDefItem.RanParameterValue.ValueIntPresent = true - ranUEGroupDefItem.RanParameterValue.ValueInt = 100 - } else if msgContent.RANParameterValueEnumPresent { - ranUEGroupDefItem.RanParameterValue.ValueEnumPresent = true - ranUEGroupDefItem.RanParameterValue.ValueEnum = 100 - } else if msgContent.RANParameterValueBoolPresent { - ranUEGroupDefItem.RanParameterValue.ValueBoolPresent = true - ranUEGroupDefItem.RanParameterValue.ValueBool = true - } else if msgContent.RANParameterValueBitSPresent { - ranUEGroupDefItem.RanParameterValue.ValueBitSPresent = true - ranUEGroupDefItem.RanParameterValue.ValueBitS.UnusedBits = 0 - ranUEGroupDefItem.RanParameterValue.ValueBitS.Length = 3 - ranUEGroupDefItem.RanParameterValue.ValueBitS.Data = - append(ranUEGroupDefItem.RanParameterValue.ValueBitS.Data, 1, 2, 3) - } else if msgContent.RANParameterValueOctSPresent { - ranUEGroupDefItem.RanParameterValue.ValueOctSPresent = true - ranUEGroupDefItem.RanParameterValue.ValueOctS.Length = 3 - ranUEGroupDefItem.RanParameterValue.ValueOctS.Data = - append(ranUEGroupDefItem.RanParameterValue.ValueOctS.Data, 1, 2, 3) - } else if msgContent.RANParameterValuePrtSPresent { - ranUEGroupDefItem.RanParameterValue.ValuePrtSPresent = true - ranUEGroupDefItem.RanParameterValue.ValuePrtS.Length = 3 - ranUEGroupDefItem.RanParameterValue.ValuePrtS.Data = - append(ranUEGroupDefItem.RanParameterValue.ValuePrtS.Data, 1, 2, 3) - } - ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems = - append(ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems, ranUEGroupDefItem) - } - // 1..255 - for index4 := 0; index4 < 1; index4++ { - ranParameterItem := e2ap.RANParameterItem{} - ranParameterItem.RanParameterID = 33 - if msgContent.RANParameterValueIntPresent { - ranParameterItem.RanParameterValue.ValueIntPresent = true - ranParameterItem.RanParameterValue.ValueInt = 100 - } else if msgContent.RANParameterValueEnumPresent { - ranParameterItem.RanParameterValue.ValueEnumPresent = true - ranParameterItem.RanParameterValue.ValueEnum = 100 - } else if msgContent.RANParameterValueBoolPresent { - ranParameterItem.RanParameterValue.ValueBoolPresent = true - ranParameterItem.RanParameterValue.ValueBool = true - } else if msgContent.RANParameterValueBitSPresent { - ranParameterItem.RanParameterValue.ValueBitSPresent = true - ranParameterItem.RanParameterValue.ValueBitS.UnusedBits = 0 - ranParameterItem.RanParameterValue.ValueBitS.Length = 3 - ranParameterItem.RanParameterValue.ValueBitS.Data = - append(ranParameterItem.RanParameterValue.ValueBitS.Data, 1, 2, 3) - } else if msgContent.RANParameterValueOctSPresent { - ranParameterItem.RanParameterValue.ValueOctSPresent = true - ranParameterItem.RanParameterValue.ValueOctS.Length = 3 - ranParameterItem.RanParameterValue.ValueOctS.Data = - append(ranParameterItem.RanParameterValue.ValueOctS.Data, 1, 2, 3) - } else if msgContent.RANParameterValuePrtSPresent { - ranParameterItem.RanParameterValue.ValuePrtSPresent = true - ranParameterItem.RanParameterValue.ValuePrtS.Length = 3 - ranParameterItem.RanParameterValue.ValuePrtS.Data = - append(ranParameterItem.RanParameterValue.ValuePrtS.Data, 1, 2, 3) - } - ranUEgroupItem.RanPolicy.RanParameterItems = - append(ranUEgroupItem.RanPolicy.RanParameterItems, ranParameterItem) - } - ranUEgroupItem.RanUEgroupID = 2 - item.ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems = - append(item.ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems, ranUEgroupItem) - } - } else if item.ActionDefinitionChoice.ActionDefinitionNRTFormat1Present { - // 1..255 - for index2 := 0; index2 < 1; index2++ { - ranParameterItem := e2ap.RANParameterItem{} - ranParameterItem.RanParameterID = 33 - if msgContent.RANParameterValueIntPresent { - ranParameterItem.RanParameterValue.ValueIntPresent = true - ranParameterItem.RanParameterValue.ValueInt = 100 - } else if msgContent.RANParameterValueEnumPresent { - ranParameterItem.RanParameterValue.ValueEnumPresent = true - ranParameterItem.RanParameterValue.ValueEnum = 100 - } else if msgContent.RANParameterValueBoolPresent { - ranParameterItem.RanParameterValue.ValueBoolPresent = true - ranParameterItem.RanParameterValue.ValueBool = true - } else if msgContent.RANParameterValueBitSPresent { - ranParameterItem.RanParameterValue.ValueBitSPresent = true - ranParameterItem.RanParameterValue.ValueBitS.UnusedBits = 0 - ranParameterItem.RanParameterValue.ValueBitS.Length = 3 - ranParameterItem.RanParameterValue.ValueBitS.Data = - append(ranParameterItem.RanParameterValue.ValueBitS.Data, 1, 2, 3) - } else if msgContent.RANParameterValueOctSPresent { - ranParameterItem.RanParameterValue.ValueOctSPresent = true - ranParameterItem.RanParameterValue.ValueOctS.Length = 3 - ranParameterItem.RanParameterValue.ValueOctS.Data = - append(ranParameterItem.RanParameterValue.ValueOctS.Data, 1, 2, 3) - } else if msgContent.RANParameterValuePrtSPresent { - ranParameterItem.RanParameterValue.ValuePrtSPresent = true - ranParameterItem.RanParameterValue.ValuePrtS.Length = 3 - ranParameterItem.RanParameterValue.ValuePrtS.Data = - append(ranParameterItem.RanParameterValue.ValuePrtS.Data, 1, 2, 3) - } - item.ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList = - append(item.ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList, ranParameterItem) - } + if msgContent.ActionDefinitionX2Format1Present { + item.ActionDefinitionChoice.Data.Length = 1 + item.ActionDefinitionChoice.Data.Data = make([]uint8, item.ActionDefinitionChoice.Data.Length) + item.ActionDefinitionChoice.Data.Data[0] = 1 + } else if msgContent.ActionDefinitionX2Format2Present { + item.ActionDefinitionChoice.Data.Length = 1 + item.ActionDefinitionChoice.Data.Data = make([]uint8, item.ActionDefinitionChoice.Data.Length) + item.ActionDefinitionChoice.Data.Data[0] = 2 + } else if msgContent.ActionDefinitionNRTFormat1Present { + item.ActionDefinitionChoice.Data.Length = 1 + item.ActionDefinitionChoice.Data.Data = make([]uint8, item.ActionDefinitionChoice.Data.Length) + item.ActionDefinitionChoice.Data.Data[0] = 3 } } item.SubsequentAction.Present = true diff --git a/e2ap/pkg/e2ap/msg_e2ap.go b/e2ap/pkg/e2ap/msg_e2ap.go index 2ce2c17..96ef099 100644 --- a/e2ap/pkg/e2ap/msg_e2ap.go +++ b/e2ap/pkg/e2ap/msg_e2ap.go @@ -183,34 +183,9 @@ const ( ) type EventTriggerDefinition struct { - NBX2EventTriggerDefinitionPresent bool - X2EventTriggerDefinition - NBNRTEventTriggerDefinitionPresent bool - NBNRTEventTriggerDefinition + Data OctetString } -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type X2EventTriggerDefinition struct { - InterfaceId - InterfaceDirection uint32 - ProcedureCode uint32 - TypeOfMessage uint64 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type NBNRTEventTriggerDefinition struct { - TriggerNature uint8 -} - -const ( // enum NRTTriggerNature - NRTTriggerNature_now = iota - NRTTriggerNature_onchange -) - /* //----------------------------------------------------------------------------- // @@ -221,129 +196,7 @@ type CallProcessId struct { */ type ActionDefinitionChoice struct { - ActionDefinitionX2Format1Present bool - ActionDefinitionX2Format1 E2SMgNBX2actionDefinition - ActionDefinitionX2Format2Present bool - ActionDefinitionX2Format2 ActionDefinitionFormat2 - ActionDefinitionNRTFormat1Present bool - ActionDefinitionNRTFormat1 E2SMgNBNRTActionDefinitionFormat1 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type E2SMgNBNRTActionDefinitionFormat1 struct { - RanParameterList []RANParameterItem // 1..255 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type E2SMgNBX2actionDefinition struct { - StyleID uint64 - ActionParameterItems []ActionParameterItem // 1..255 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type ActionParameterItem struct { - ParameterID uint32 // 1..255 - ActionParameterValue ActionParameterValue -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type ActionParameterValue struct { - ValueIntPresent bool - ValueInt int64 - ValueEnumPresent bool - ValueEnum int64 - ValueBoolPresent bool - ValueBool bool - ValueBitSPresent bool - ValueBitS BitString - ValueOctSPresent bool - ValueOctS OctetString - ValuePrtSPresent bool - ValuePrtS OctetString -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type ActionDefinitionFormat2 struct { - RanUEgroupItems []RANueGroupItem // 1..15 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type RANueGroupItem struct { - RanUEgroupID int64 - RanUEgroupDefinition RANueGroupDefinition - RanPolicy RANimperativePolicy -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type RANueGroupDefinition struct { - RanUEGroupDefItems []RANueGroupDefItem // 1..255 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type RANimperativePolicy struct { - RanParameterItems []RANParameterItem // 1..255 -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type RANueGroupDefItem struct { - RanParameterID uint32 // 1..255 - RanParameterTest uint8 - RanParameterValue RANParameterValue -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type RANParameterItem struct { - RanParameterID uint8 // 1..255 - RanParameterValue RANParameterValue -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -const ( // enum RANParameterTest - RANParameterTest_equal = iota - RANParameterTest_greaterthan - RANParameterTest_lessthan - RANParameterTest_contains - RANParameterTest_present -) - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type RANParameterValue struct { - ValueIntPresent bool - ValueInt int64 - ValueEnumPresent bool - ValueEnum int64 - ValueBoolPresent bool - ValueBool bool - ValueBitSPresent bool - ValueBitS BitString - ValueOctSPresent bool - ValueOctS OctetString - ValuePrtSPresent bool - ValuePrtS OctetString + Data OctetString } //----------------------------------------------------------------------------- diff --git a/e2ap/pkg/e2ap_wrapper/packer_e2ap.go b/e2ap/pkg/e2ap_wrapper/packer_e2ap.go index fafa141..dafac42 100644 --- a/e2ap/pkg/e2ap_wrapper/packer_e2ap.go +++ b/e2ap/pkg/e2ap_wrapper/packer_e2ap.go @@ -19,11 +19,10 @@ package e2ap_wrapper -// #cgo LDFLAGS: -le2ap_wrapper -le2ap -lgnbx2 -lgnbnrt -lstdc++ +// #cgo LDFLAGS: -le2ap_wrapper -le2ap -lstdc++ // #include // #include // #include -// #include // #include // // void initSubsRequest(RICSubscriptionRequest_t *data){ @@ -128,13 +127,13 @@ type e2apEntryActionToBeSetupItem struct { entry *C.RICActionToBeSetupItem_t } -func (e2Item *e2apEntryActionToBeSetupItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionToBeSetupItem) error { +func (e2Item *e2apEntryActionToBeSetupItem) set(id *e2ap.ActionToBeSetupItem) error { e2Item.entry.ricActionID = (C.ulong)(id.ActionId) e2Item.entry.ricActionType = (C.uint64_t)(id.ActionType) if id.RicActionDefinitionPresent { e2Item.entry.ricActionDefinitionPresent = true - if err := (&e2apEntryActionDefinitionChoice{entry: &e2Item.entry.ricActionDefinitionChoice}).set(dynMemHead, &id.ActionDefinitionChoice); err != nil { + if err := (&e2apEntryActionDefinitionChoice{entry: &e2Item.entry.ricActionDefinitionChoice}).set(&id.ActionDefinitionChoice); err != nil { return err } } @@ -171,462 +170,19 @@ type e2apEntryActionDefinitionChoice struct { entry *C.RICActionDefinitionChoice_t } -func (e2Item *e2apEntryActionDefinitionChoice) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionDefinitionChoice) error { - - if id.ActionDefinitionX2Format1Present { - e2Item.entry.actionDefinitionX2Format1Present = true - errorNro := C.allocActionDefinitionX2Format1(dynMemHead, &e2Item.entry.actionDefinitionX2Format1) - if errorNro != C.e2err_OK { - return fmt.Errorf("e2err(%s)", C.GoString(C.getE2ErrorString(errorNro))) - } - if err := (&e2apEntryE2SMgNBX2actionDefinition{entry: e2Item.entry.actionDefinitionX2Format1}).set(dynMemHead, &id.ActionDefinitionX2Format1); err != nil { - return err - } - - } else if id.ActionDefinitionX2Format2Present { - e2Item.entry.actionDefinitionX2Format2Present = true - errorNro := C.allocActionDefinitionX2Format2(dynMemHead, &e2Item.entry.actionDefinitionX2Format2) - if errorNro != C.e2err_OK { - return fmt.Errorf("e2err(%s)", C.GoString(C.getE2ErrorString(errorNro))) - } - if err := (&e2apEntryActionDefinitionFormat2{entry: e2Item.entry.actionDefinitionX2Format2}).set(dynMemHead, &id.ActionDefinitionX2Format2); err != nil { - return err - } - } else if id.ActionDefinitionNRTFormat1Present { - e2Item.entry.actionDefinitionNRTFormat1Present = true - errorNro := C.allocActionDefinitionNRTFormat1(dynMemHead, &e2Item.entry.actionDefinitionNRTFormat1) - if errorNro != C.e2err_OK { - return fmt.Errorf("e2err(%s)", C.GoString(C.getE2ErrorString(errorNro))) - } - if err := (&e2apEntryE2SMgNBNRTactionDefinitionFormat1{entry: e2Item.entry.actionDefinitionNRTFormat1}).set(dynMemHead, &id.ActionDefinitionNRTFormat1); err != nil { - return err - } - } else { - return fmt.Errorf("Set() Missing mandatory ActionDefinition element") +func (e2Item *e2apEntryActionDefinitionChoice) set(id *e2ap.ActionDefinitionChoice) error { + if id.Data.Length > 0 { + e2Item.entry.octetString.contentLength = C.size_t(id.Data.Length) + C.memcpy(unsafe.Pointer(&e2Item.entry.octetString.data[0]), unsafe.Pointer(&id.Data.Data[0]), C.size_t(e2Item.entry.octetString.contentLength)) } return nil } func (e2Item *e2apEntryActionDefinitionChoice) get(id *e2ap.ActionDefinitionChoice) error { - if e2Item.entry.actionDefinitionX2Format1Present { - id.ActionDefinitionX2Format1Present = true - if err := (&e2apEntryE2SMgNBX2actionDefinition{entry: e2Item.entry.actionDefinitionX2Format1}).get(&id.ActionDefinitionX2Format1); err != nil { - return err - } - } else if e2Item.entry.actionDefinitionX2Format2Present { - id.ActionDefinitionX2Format2Present = true - if err := (&e2apEntryActionDefinitionFormat2{entry: e2Item.entry.actionDefinitionX2Format2}).get(&id.ActionDefinitionX2Format2); err != nil { - return err - } - } else if e2Item.entry.actionDefinitionNRTFormat1Present { - id.ActionDefinitionNRTFormat1Present = true - if err := (&e2apEntryE2SMgNBNRTactionDefinitionFormat1{entry: e2Item.entry.actionDefinitionNRTFormat1}).get(&id.ActionDefinitionNRTFormat1); err != nil { - return err - } - } else { - return fmt.Errorf("Get() Missing mandatory ActionDefinition element") - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryE2SMgNBX2actionDefinition struct { - entry *C.E2SMgNBX2actionDefinition_t -} - -func (e2Item *e2apEntryE2SMgNBX2actionDefinition) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.E2SMgNBX2actionDefinition) error { - - e2Item.entry.styleID = (C.uint64_t)(id.StyleID) - // 1..255 - e2Item.entry.actionParameterCount = 0 - for i := 0; i < len(id.ActionParameterItems); i++ { - if err := (&e2apEntryActionParameterItem{entry: &e2Item.entry.actionParameterItem[i]}).set(dynMemHead, &id.ActionParameterItems[i]); err != nil { - return err - } - e2Item.entry.actionParameterCount++ - } - return nil -} - -func (e2Item *e2apEntryE2SMgNBX2actionDefinition) get(id *e2ap.E2SMgNBX2actionDefinition) error { - - id.StyleID = (uint64)(e2Item.entry.styleID) - - // 1..255 - length := (int)(e2Item.entry.actionParameterCount) - id.ActionParameterItems = make([]e2ap.ActionParameterItem, length) - for i := 0; i < length; i++ { - if err := (&e2apEntryActionParameterItem{entry: &e2Item.entry.actionParameterItem[i]}).get(&id.ActionParameterItems[i]); err != nil { - return err - } - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryE2SMgNBNRTactionDefinitionFormat1 struct { - entry *C.E2SMgNBNRTActionDefinitionFormat1_t -} - -func (e2Item *e2apEntryE2SMgNBNRTactionDefinitionFormat1) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.E2SMgNBNRTActionDefinitionFormat1) error { - // 1..255 - e2Item.entry.ranParameterCount = 0 - for i := 0; i < len(id.RanParameterList); i++ { - if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterList[i]}).set(dynMemHead, &id.RanParameterList[i]); err != nil { - return err - } - e2Item.entry.ranParameterCount++ - } - return nil -} - -func (e2Item *e2apEntryE2SMgNBNRTactionDefinitionFormat1) get(id *e2ap.E2SMgNBNRTActionDefinitionFormat1) error { - // 1..255 - length := (int)(e2Item.entry.ranParameterCount) - id.RanParameterList = make([]e2ap.RANParameterItem, length) - for i := 0; i < length; i++ { - if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterList[i]}).get(&id.RanParameterList[i]); err != nil { - return err - } - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryActionParameterItem struct { - entry *C.ActionParameterItem_t -} - -func (e2Item *e2apEntryActionParameterItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionParameterItem) error { - - e2Item.entry.parameterID = (C.uint32_t)(id.ParameterID) - if err := (&e2apEntryActionParameterValue{entry: &e2Item.entry.actionParameterValue}).set(dynMemHead, &id.ActionParameterValue); err != nil { - return err - } - return nil -} - -func (e2Item *e2apEntryActionParameterItem) get(id *e2ap.ActionParameterItem) error { - - id.ParameterID = (uint32)(e2Item.entry.parameterID) - if err := (&e2apEntryActionParameterValue{entry: &e2Item.entry.actionParameterValue}).get(&id.ActionParameterValue); err != nil { - return err - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryActionParameterValue struct { - entry *C.ActionParameterValue_t -} - -func (e2Item *e2apEntryActionParameterValue) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionParameterValue) error { - - if id.ValueIntPresent { - e2Item.entry.valueInt = (C.int64_t)(id.ValueInt) - e2Item.entry.valueIntPresent = true - } else if id.ValueEnumPresent { - e2Item.entry.valueEnum = (C.int64_t)(id.ValueEnum) - e2Item.entry.valueEnumPresent = true - } else if id.ValueBoolPresent { - e2Item.entry.valueBool = (C.bool)(id.ValueBool) - e2Item.entry.valueBoolPresent = true - } else if id.ValueBitSPresent { - if C.addBitString(dynMemHead, &e2Item.entry.valueBitS, (C.uint64_t)(id.ValueBitS.Length), unsafe.Pointer(&id.ValueBitS.Data[0]), (C.uint8_t)(id.ValueBitS.UnusedBits)) == false { - return fmt.Errorf("Alloc valueBitS fail") - } - e2Item.entry.valueBitSPresent = true - } else if id.ValueOctSPresent { - if C.addOctetString(dynMemHead, &e2Item.entry.valueOctS, (C.uint64_t)(id.ValueOctS.Length), unsafe.Pointer(&id.ValueOctS.Data[0])) == false { - return fmt.Errorf("Alloc valueOctS fail") - } - e2Item.entry.valueOctSPresent = true - } else if id.ValuePrtSPresent { - if C.addOctetString(dynMemHead, &e2Item.entry.valuePrtS, (C.uint64_t)(id.ValuePrtS.Length), unsafe.Pointer(&id.ValuePrtS.Data[0])) == false { - return fmt.Errorf("Alloc valuePrtS fail") - } - e2Item.entry.valuePrtSPresent = true - } - return nil -} - -func (e2Item *e2apEntryActionParameterValue) get(id *e2ap.ActionParameterValue) error { - - if e2Item.entry.valueIntPresent { - id.ValueInt = (int64)(e2Item.entry.valueInt) - id.ValueIntPresent = true - } else if e2Item.entry.valueEnumPresent { - id.ValueEnum = (int64)(e2Item.entry.valueEnum) - id.ValueEnumPresent = true - } else if e2Item.entry.valueBoolPresent { - id.ValueBool = (bool)(e2Item.entry.valueBool) - id.ValueBoolPresent = true - } else if e2Item.entry.valueBitSPresent { - id.ValueBitSPresent = true - id.ValueBitS.Length = (uint64)(e2Item.entry.valueBitS.byteLength) - id.ValueBitS.UnusedBits = (uint8)(e2Item.entry.valueBitS.unusedBits) - id.ValueBitS.Data = make([]uint8, id.ValueBitS.Length) - C.memcpy(unsafe.Pointer(&id.ValueBitS.Data[0]), unsafe.Pointer(e2Item.entry.valueBitS.data), C.size_t(e2Item.entry.valueBitS.byteLength)) - } else if e2Item.entry.valueOctSPresent { - id.ValueOctSPresent = true - id.ValueOctS.Length = (uint64)(e2Item.entry.valueOctS.length) - id.ValueOctS.Data = make([]uint8, id.ValueOctS.Length) - C.memcpy(unsafe.Pointer(&id.ValueOctS.Data[0]), unsafe.Pointer(e2Item.entry.valueOctS.data), C.size_t(e2Item.entry.valueOctS.length)) - } else if e2Item.entry.valuePrtSPresent { - id.ValuePrtSPresent = true - id.ValuePrtS.Length = (uint64)(e2Item.entry.valuePrtS.length) - id.ValuePrtS.Data = make([]uint8, id.ValuePrtS.Length) - C.memcpy(unsafe.Pointer(&id.ValuePrtS.Data[0]), unsafe.Pointer(e2Item.entry.valuePrtS.data), C.size_t(e2Item.entry.valuePrtS.length)) - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryActionDefinitionFormat2 struct { - entry *C.E2SMgNBX2ActionDefinitionFormat2_t -} - -func (e2Item *e2apEntryActionDefinitionFormat2) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionDefinitionFormat2) error { - // 1..15 - e2Item.entry.ranUeGroupCount = 0 - for i := 0; i < len(id.RanUEgroupItems); i++ { - if err := (&e2apEntryRANueGroupItem{entry: &e2Item.entry.ranUeGroupItem[i]}).set(dynMemHead, &id.RanUEgroupItems[i]); err != nil { - return err - } - e2Item.entry.ranUeGroupCount++ - } - return nil -} - -func (e2Item *e2apEntryActionDefinitionFormat2) get(id *e2ap.ActionDefinitionFormat2) error { - // 1..15 - length := (int)(e2Item.entry.ranUeGroupCount) - id.RanUEgroupItems = make([]e2ap.RANueGroupItem, length) - for i := 0; i < length; i++ { - if err := (&e2apEntryRANueGroupItem{entry: &e2Item.entry.ranUeGroupItem[i]}).get(&id.RanUEgroupItems[i]); err != nil { - return err - } - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryRANueGroupItem struct { - entry *C.RANueGroupItem_t -} - -func (e2Item *e2apEntryRANueGroupItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANueGroupItem) error { - e2Item.entry.ranUEgroupID = (C.int64_t)(id.RanUEgroupID) - if err := (&e2apEntryRANueGroupDefinition{entry: &e2Item.entry.ranUEgroupDefinition}).set(dynMemHead, &id.RanUEgroupDefinition); err != nil { - return err - } - if err := (&e2apEntryRANimperativePolicy{entry: &e2Item.entry.ranPolicy}).set(dynMemHead, &id.RanPolicy); err != nil { - return err - } - return nil -} - -func (e2Item *e2apEntryRANueGroupItem) get(id *e2ap.RANueGroupItem) error { - id.RanUEgroupID = (int64)(e2Item.entry.ranUEgroupID) - if err := (&e2apEntryRANueGroupDefinition{entry: &e2Item.entry.ranUEgroupDefinition}).get(&id.RanUEgroupDefinition); err != nil { - return err - } - if err := (&e2apEntryRANimperativePolicy{entry: &e2Item.entry.ranPolicy}).get(&id.RanPolicy); err != nil { - return err - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryRANueGroupDefinition struct { - entry *C.RANueGroupDefinition_t -} - -func (e2Item *e2apEntryRANueGroupDefinition) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANueGroupDefinition) error { - // 1..255 - e2Item.entry.ranUeGroupDefCount = 0 - for i := 0; i < len(id.RanUEGroupDefItems); i++ { - if err := (&e2apEntryRANueGroupDefItem{entry: &e2Item.entry.ranUeGroupDefItem[i]}).set(dynMemHead, &id.RanUEGroupDefItems[i]); err != nil { - return err - } - e2Item.entry.ranUeGroupDefCount++ - } - return nil -} - -func (e2Item *e2apEntryRANueGroupDefinition) get(id *e2ap.RANueGroupDefinition) error { - // 1..255 - length := (int)(e2Item.entry.ranUeGroupDefCount) - id.RanUEGroupDefItems = make([]e2ap.RANueGroupDefItem, length) - for i := 0; i < length; i++ { - if err := (&e2apEntryRANueGroupDefItem{entry: &e2Item.entry.ranUeGroupDefItem[i]}).get(&id.RanUEGroupDefItems[i]); err != nil { - return err - } - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryRANimperativePolicy struct { - entry *C.RANimperativePolicy_t -} - -func (e2Item *e2apEntryRANimperativePolicy) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANimperativePolicy) error { - // 1..255 - e2Item.entry.ranParameterCount = 0 - for i := 0; i < len(id.RanParameterItems); i++ { - if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterItem[i]}).set(dynMemHead, &id.RanParameterItems[i]); err != nil { - return err - } - e2Item.entry.ranParameterCount++ - } - return nil -} - -func (e2Item *e2apEntryRANimperativePolicy) get(id *e2ap.RANimperativePolicy) error { - // 1..255 - length := (int)(e2Item.entry.ranParameterCount) - id.RanParameterItems = make([]e2ap.RANParameterItem, length) - for i := 0; i < length; i++ { - if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterItem[i]}).get(&id.RanParameterItems[i]); err != nil { - return err - } - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryRANueGroupDefItem struct { - entry *C.RANueGroupDefItem_t -} - -func (e2Item *e2apEntryRANueGroupDefItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANueGroupDefItem) error { - - e2Item.entry.ranParameterID = (C.uint32_t)(id.RanParameterID) - e2Item.entry.ranParameterTest = (C.uint8_t)(id.RanParameterTest) - if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).set(dynMemHead, &id.RanParameterValue); err != nil { - return err - } - return nil -} - -func (e2Item *e2apEntryRANueGroupDefItem) get(id *e2ap.RANueGroupDefItem) error { - - id.RanParameterID = (uint32)(e2Item.entry.ranParameterID) - id.RanParameterTest = (uint8)(e2Item.entry.ranParameterTest) - if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).get(&id.RanParameterValue); err != nil { - return err - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryRANParameterItem struct { - entry *C.RANParameterItem_t -} - -func (e2Item *e2apEntryRANParameterItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANParameterItem) error { - - e2Item.entry.ranParameterID = (C.uint32_t)(id.RanParameterID) - if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).set(dynMemHead, &id.RanParameterValue); err != nil { - return err - } - return nil -} - -func (e2Item *e2apEntryRANParameterItem) get(id *e2ap.RANParameterItem) error { - - id.RanParameterID = (uint8)(e2Item.entry.ranParameterID) - if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).get(&id.RanParameterValue); err != nil { - return err - } - return nil -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryRANParameterValue struct { - entry *C.RANParameterValue_t -} - -func (e2Item *e2apEntryRANParameterValue) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANParameterValue) error { - - if id.ValueIntPresent { - e2Item.entry.valueInt = (C.int64_t)(id.ValueInt) - e2Item.entry.valueIntPresent = true - } else if id.ValueEnumPresent { - e2Item.entry.valueEnum = (C.int64_t)(id.ValueEnum) - e2Item.entry.valueEnumPresent = true - } else if id.ValueBoolPresent { - e2Item.entry.valueBool = (C.bool)(id.ValueBool) - e2Item.entry.valueBoolPresent = true - } else if id.ValueBitSPresent { - if C.addBitString(dynMemHead, &e2Item.entry.valueBitS, (C.uint64_t)(id.ValueBitS.Length), unsafe.Pointer(&id.ValueBitS.Data[0]), (C.uint8_t)(id.ValueBitS.UnusedBits)) == false { - return fmt.Errorf("Alloc valueBitS fail") - } - e2Item.entry.valueBitSPresent = true - } else if id.ValueOctSPresent { - if C.addOctetString(dynMemHead, &e2Item.entry.valueOctS, (C.uint64_t)(id.ValueOctS.Length), unsafe.Pointer(&id.ValueOctS.Data[0])) == false { - return fmt.Errorf("Alloc valueOctS fail") - } - e2Item.entry.valueOctSPresent = true - } else if id.ValuePrtSPresent { - if C.addOctetString(dynMemHead, &e2Item.entry.valuePrtS, (C.uint64_t)(id.ValuePrtS.Length), unsafe.Pointer(&id.ValuePrtS.Data[0])) == false { - return fmt.Errorf("Alloc valuePrtS fail") - } - e2Item.entry.valuePrtSPresent = true - } - return nil -} - -func (e2Item *e2apEntryRANParameterValue) get(id *e2ap.RANParameterValue) error { - - if e2Item.entry.valueIntPresent { - id.ValueInt = (int64)(e2Item.entry.valueInt) - id.ValueIntPresent = true - } else if e2Item.entry.valueEnumPresent { - id.ValueEnum = (int64)(e2Item.entry.valueEnum) - id.ValueEnumPresent = true - } else if e2Item.entry.valueBoolPresent { - id.ValueBool = (bool)(e2Item.entry.valueBool) - id.ValueBoolPresent = true - } else if e2Item.entry.valueBitSPresent { - id.ValueBitSPresent = true - id.ValueBitS.Length = (uint64)(e2Item.entry.valueBitS.byteLength) - id.ValueBitS.UnusedBits = (uint8)(e2Item.entry.valueBitS.unusedBits) - id.ValueBitS.Data = make([]uint8, id.ValueBitS.Length) - C.memcpy(unsafe.Pointer(&id.ValueBitS.Data[0]), unsafe.Pointer(e2Item.entry.valueBitS.data), C.size_t(e2Item.entry.valueBitS.byteLength)) - } else if e2Item.entry.valueOctSPresent { - id.ValueOctSPresent = true - id.ValueOctS.Length = (uint64)(e2Item.entry.valueOctS.length) - id.ValueOctS.Data = make([]uint8, id.ValueOctS.Length) - C.memcpy(unsafe.Pointer(&id.ValueOctS.Data[0]), unsafe.Pointer(e2Item.entry.valueOctS.data), C.size_t(e2Item.entry.valueOctS.length)) - } else if e2Item.entry.valuePrtSPresent { - id.ValuePrtSPresent = true - id.ValuePrtS.Length = (uint64)(e2Item.entry.valuePrtS.length) - id.ValuePrtS.Data = make([]uint8, id.ValuePrtS.Length) - C.memcpy(unsafe.Pointer(&id.ValuePrtS.Data[0]), unsafe.Pointer(e2Item.entry.valuePrtS.data), C.size_t(e2Item.entry.valuePrtS.length)) + id.Data.Length = (uint64)(e2Item.entry.octetString.contentLength) + if id.Data.Length > 0 { + id.Data.Data = make([]uint8, id.Data.Length) + C.memcpy(unsafe.Pointer(&id.Data.Data[0]), unsafe.Pointer(&e2Item.entry.octetString.data[0]), C.size_t(e2Item.entry.octetString.contentLength)) } return nil } @@ -781,64 +337,21 @@ type e2apEntryEventTrigger struct { } func (evtTrig *e2apEntryEventTrigger) set(id *e2ap.EventTriggerDefinition) error { - if id.NBX2EventTriggerDefinitionPresent { - evtTrig.entry.E2SMgNBX2EventTriggerDefinitionPresent = true - return (&e2apEntryX2EventTrigger{entry: &evtTrig.entry.e2SMgNBX2eventTriggerDefinition}).set(&id.X2EventTriggerDefinition) - } else if id.NBNRTEventTriggerDefinitionPresent { - evtTrig.entry.E2SMgNBNRTEventTriggerDefinitionPresent = true - return (&e2apEntryNRTEventTrigger{entry: &evtTrig.entry.e2SMgNBNRTEventTriggerDefinition}).set(&id.NBNRTEventTriggerDefinition) + if id.Data.Length > 0 { + evtTrig.entry.octetString.contentLength = C.size_t(id.Data.Length) + C.memcpy(unsafe.Pointer(&evtTrig.entry.octetString.data[0]), unsafe.Pointer(&id.Data.Data[0]), C.size_t(evtTrig.entry.octetString.contentLength)) } - return fmt.Errorf("Set() empty EventTriggerDefinition") + return nil } func (evtTrig *e2apEntryEventTrigger) get(id *e2ap.EventTriggerDefinition) error { - if evtTrig.entry.E2SMgNBX2EventTriggerDefinitionPresent { - id.NBX2EventTriggerDefinitionPresent = true - return (&e2apEntryX2EventTrigger{entry: &evtTrig.entry.e2SMgNBX2eventTriggerDefinition}).get(&id.X2EventTriggerDefinition) - } else if evtTrig.entry.E2SMgNBNRTEventTriggerDefinitionPresent { - id.NBNRTEventTriggerDefinitionPresent = true - return (&e2apEntryNRTEventTrigger{entry: &evtTrig.entry.e2SMgNBNRTEventTriggerDefinition}).get(&id.NBNRTEventTriggerDefinition) + id.Data.Length = (uint64)(evtTrig.entry.octetString.contentLength) + if id.Data.Length > 0 { + id.Data.Data = make([]uint8, id.Data.Length) + C.memcpy(unsafe.Pointer(&id.Data.Data[0]), unsafe.Pointer(&evtTrig.entry.octetString.data[0]), C.size_t(evtTrig.entry.octetString.contentLength)) } - return fmt.Errorf("Get() empty EventTriggerDefinition") -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryX2EventTrigger struct { - entry *C.E2SMgNBX2eventTriggerDefinition_t -} - -func (evtTrig *e2apEntryX2EventTrigger) set(id *e2ap.X2EventTriggerDefinition) error { - evtTrig.entry.interfaceDirection = (C.uint8_t)(id.InterfaceDirection) - evtTrig.entry.interfaceMessageType.procedureCode = (C.uint8_t)(id.ProcedureCode) - evtTrig.entry.interfaceMessageType.typeOfMessage = (C.uint8_t)(id.TypeOfMessage) - return (&e2apEntryInterfaceId{entry: &evtTrig.entry.interfaceID}).set(&id.InterfaceId) -} - -func (evtTrig *e2apEntryX2EventTrigger) get(id *e2ap.X2EventTriggerDefinition) error { - id.InterfaceDirection = (uint32)(evtTrig.entry.interfaceDirection) - id.ProcedureCode = (uint32)(evtTrig.entry.interfaceMessageType.procedureCode) - id.TypeOfMessage = (uint64)(evtTrig.entry.interfaceMessageType.typeOfMessage) - return (&e2apEntryInterfaceId{entry: &evtTrig.entry.interfaceID}).get(&id.InterfaceId) -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -type e2apEntryNRTEventTrigger struct { - entry *C.E2SMgNBNRTEventTriggerDefinition_t -} - -func (evtTrig *e2apEntryNRTEventTrigger) set(id *e2ap.NBNRTEventTriggerDefinition) error { - evtTrig.entry.eventDefinitionFormat1.triggerNature = (C.uint8_t)(id.TriggerNature) - return nil -} - -func (evtTrig *e2apEntryNRTEventTrigger) get(id *e2ap.NBNRTEventTriggerDefinition) error { - id.TriggerNature = (uint8)(evtTrig.entry.eventDefinitionFormat1.triggerNature) return nil } @@ -1078,10 +591,6 @@ func (e2apMsg *e2apMsgPackerSubscriptionRequest) Pack(data *e2ap.E2APSubscriptio defer e2apMsg.fini() e2apMsg.msgG = data - var dynMemHead C.mem_track_hdr_t - C.mem_track_init(&dynMemHead) - defer C.mem_track_free(&dynMemHead) - e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId) if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil { return err, nil @@ -1096,7 +605,7 @@ func (e2apMsg *e2apMsgPackerSubscriptionRequest) Pack(data *e2ap.E2APSubscriptio for i := 0; i < len(e2apMsg.msgG.ActionSetups); i++ { item := &e2apEntryActionToBeSetupItem{entry: &e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength]} e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength += 1 - if err := item.set(&dynMemHead, &e2apMsg.msgG.ActionSetups[i]); err != nil { + if err := item.set(&e2apMsg.msgG.ActionSetups[i]); err != nil { return err, nil } } @@ -1116,11 +625,7 @@ func (e2apMsg *e2apMsgPackerSubscriptionRequest) UnPack(msg *e2ap.PackedData) (e return err, e2apMsg.msgG } - var dynMemHead C.mem_track_hdr_t - C.mem_track_init(&dynMemHead) - defer C.mem_track_free(&dynMemHead) - - errorNro := C.getRICSubscriptionRequestData(&dynMemHead, e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC) + errorNro := C.getRICSubscriptionRequestData(e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC) if err := e2apMsg.checkerr(errorNro); err != nil { return err, e2apMsg.msgG } @@ -1152,29 +657,6 @@ func (e2apMsg *e2apMsgPackerSubscriptionRequest) String() string { fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID) fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID) fmt.Fprintln(&b, " ricSubscriptionDetails.") - fmt.Fprintln(&b, " ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.") - fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.octetString.contentLength) - fmt.Fprintln(&b, " interfaceID.globalENBIDPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent) - if e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent { - fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength) - fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0]) - fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1]) - fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2]) - fmt.Fprintln(&b, " interfaceID.globalENBID.nodeID.bits =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits) - fmt.Fprintln(&b, " interfaceID.globalENBID.nodeID.nodeID =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID) - } - fmt.Fprintln(&b, " interfaceID.globalGNBIDPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent) - if e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent { - fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength) - fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[0] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[0]) - fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[1] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[1]) - fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[2] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[2]) - fmt.Fprintln(&b, " interfaceID.globalGNBID.nodeID.bits =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.bits) - fmt.Fprintln(&b, " interfaceID.globalGNBID.nodeID.nodeID =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.nodeID) - } - fmt.Fprintln(&b, " interfaceDirection = ", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceDirection) - fmt.Fprintln(&b, " interfaceMessageType.procedureCode =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceMessageType.procedureCode) - fmt.Fprintln(&b, " interfaceMessageType.typeOfMessage =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage) fmt.Fprintln(&b, " ricActionToBeSetupItemIEs.") fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength) var index uint8 @@ -1182,15 +664,7 @@ func (e2apMsg *e2apMsgPackerSubscriptionRequest) String() string { for (C.uchar)(index) < e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength { fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionID =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionID) fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionType =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionType) - fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent) - if e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent { - fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format1Present =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format1Present) - fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format2Present =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format2Present) - fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionNRTFormat1Present =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionNRTFormat1Present) - // Dynamically allocated C-structs are already freed. Can't print those. - } - fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricSubsequentActionPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent) if e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent { fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType) diff --git a/pkg/control/subscription.go b/pkg/control/subscription.go index b2516bd..5243093 100644 --- a/pkg/control/subscription.go +++ b/pkg/control/subscription.go @@ -23,7 +23,7 @@ import ( "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap" "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/xapptweaks" "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" - "reflect" + //"reflect" "sync" ) @@ -115,22 +115,13 @@ func (s *Subscription) IsMergeable(trans *TransactionXapp, subReqMsg *e2ap.E2APS } // EventTrigger check - if s.SubReqMsg.EventTriggerDefinition.InterfaceDirection != subReqMsg.EventTriggerDefinition.InterfaceDirection || - s.SubReqMsg.EventTriggerDefinition.ProcedureCode != subReqMsg.EventTriggerDefinition.ProcedureCode || - s.SubReqMsg.EventTriggerDefinition.TypeOfMessage != subReqMsg.EventTriggerDefinition.TypeOfMessage { + if s.SubReqMsg.EventTriggerDefinition.Data.Length != subReqMsg.EventTriggerDefinition.Data.Length { return false } - - if s.SubReqMsg.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present != subReqMsg.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present || - s.SubReqMsg.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId != subReqMsg.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId || - s.SubReqMsg.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.String() != subReqMsg.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.String() { - return false - } - - if s.SubReqMsg.EventTriggerDefinition.InterfaceId.GlobalGnbId.Present != subReqMsg.EventTriggerDefinition.InterfaceId.GlobalGnbId.Present || - s.SubReqMsg.EventTriggerDefinition.InterfaceId.GlobalGnbId.NodeId != subReqMsg.EventTriggerDefinition.InterfaceId.GlobalGnbId.NodeId || - s.SubReqMsg.EventTriggerDefinition.InterfaceId.GlobalGnbId.PlmnIdentity.String() != subReqMsg.EventTriggerDefinition.InterfaceId.GlobalGnbId.PlmnIdentity.String() { - return false + for i := uint64(0); i < s.SubReqMsg.EventTriggerDefinition.Data.Length; i++ { + if s.SubReqMsg.EventTriggerDefinition.Data.Data[i] != subReqMsg.EventTriggerDefinition.Data.Data[i] { + return false + } } // Actions check @@ -151,11 +142,20 @@ func (s *Subscription) IsMergeable(trans *TransactionXapp, subReqMsg *e2ap.E2APS return false } - if acts.RicActionDefinitionPresent != actt.RicActionDefinitionPresent || - reflect.DeepEqual(acts.ActionDefinitionChoice, actt.ActionDefinitionChoice) == false { + if acts.RicActionDefinitionPresent != actt.RicActionDefinitionPresent { return false } + if acts.ActionDefinitionChoice.Data.Length != actt.ActionDefinitionChoice.Data.Length { + return false + } + for i := uint64(0); i < acts.ActionDefinitionChoice.Data.Length; i++ { + if acts.ActionDefinitionChoice.Data.Data[i] != actt.ActionDefinitionChoice.Data.Data[i] { + return false + } + } + //reflect.DeepEqual(acts.ActionDefinitionChoice, actt.ActionDefinitionChoice) + if acts.SubsequentAction.Present != actt.SubsequentAction.Present || acts.SubsequentAction.Type != actt.SubsequentAction.Type || acts.SubsequentAction.TimetoWait != actt.SubsequentAction.TimetoWait { diff --git a/pkg/control/ut_messaging_test.go b/pkg/control/ut_messaging_test.go index 1e196f0..548950a 100644 --- a/pkg/control/ut_messaging_test.go +++ b/pkg/control/ut_messaging_test.go @@ -372,14 +372,17 @@ func TestSubReqAndSubDelOkTwoParallel(t *testing.T) { //Req1 rparams1 := &teststube2ap.E2StubSubsReqParams{} rparams1.Init() - rparams1.Req.EventTriggerDefinition.ProcedureCode = 5 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil) crereq1, cremsg1 := e2termConn1.RecvSubsReq(t) //Req2 rparams2 := &teststube2ap.E2StubSubsReqParams{} rparams2.Init() - rparams2.Req.EventTriggerDefinition.ProcedureCode = 28 + + rparams2.Req.EventTriggerDefinition.Data.Length = 1 + rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length) + rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2 + cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil) crereq2, cremsg2 := e2termConn1.RecvSubsReq(t) diff --git a/pkg/teststube2ap/stubE2.go b/pkg/teststube2ap/stubE2.go index 5804f74..160597f 100644 --- a/pkg/teststube2ap/stubE2.go +++ b/pkg/teststube2ap/stubE2.go @@ -106,77 +106,20 @@ func (p *E2StubSubsReqParams) Init() { // gnb -> enb outgoing // enb -> gnb incoming // X2 36423-f40.doc - p.Req.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent = true - p.Req.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent = false - if p.Req.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent == true { - p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true - p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150") - p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 123 - p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28 - - p.Req.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming - p.Req.EventTriggerDefinition.ProcedureCode = 5 //28 35 - p.Req.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage - } else if p.Req.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent == true { - p.Req.EventTriggerDefinition.NBNRTEventTriggerDefinition.TriggerNature = e2ap.NRTTriggerNature_now - } + p.Req.EventTriggerDefinition.Data.Length = 1 + p.Req.EventTriggerDefinition.Data.Data = make([]uint8, p.Req.EventTriggerDefinition.Data.Length) + p.Req.EventTriggerDefinition.Data.Data[0] = 1 p.Req.ActionSetups = make([]e2ap.ActionToBeSetupItem, 1) p.Req.ActionSetups[0].ActionId = 0 p.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeReport p.Req.ActionSetups[0].RicActionDefinitionPresent = true - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1Present = false - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2Present = true - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1Present = false - - if p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1Present { - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1.StyleID = 99 - // 1..255 - for index := 0; index < 1; index++ { - actionParameterItem := e2ap.ActionParameterItem{} - actionParameterItem.ParameterID = 11 - actionParameterItem.ActionParameterValue.ValueIntPresent = true - actionParameterItem.ActionParameterValue.ValueInt = 100 - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems = - append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems, actionParameterItem) - } - } else if p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2Present { - // 1..15 - for index := 0; index < 1; index++ { - ranUEgroupItem := e2ap.RANueGroupItem{} - // 1..255 - for index2 := 0; index2 < 1; index2++ { - ranUEGroupDefItem := e2ap.RANueGroupDefItem{} - ranUEGroupDefItem.RanParameterID = 22 - ranUEGroupDefItem.RanParameterTest = e2ap.RANParameterTest_equal - ranUEGroupDefItem.RanParameterValue.ValueIntPresent = true - ranUEGroupDefItem.RanParameterValue.ValueInt = 100 - ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems = append(ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems, ranUEGroupDefItem) - } - // 1..255 - for index3 := 0; index3 < 1; index3++ { - ranParameterItem := e2ap.RANParameterItem{} - ranParameterItem.RanParameterID = 33 - ranParameterItem.RanParameterValue.ValueIntPresent = true - ranParameterItem.RanParameterValue.ValueInt = 100 - ranUEgroupItem.RanPolicy.RanParameterItems = append(ranUEgroupItem.RanPolicy.RanParameterItems, ranParameterItem) - } - ranUEgroupItem.RanUEgroupID = 2 - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems = - append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems, ranUEgroupItem) - } - } else if p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1Present { - // 1..255 - for index := 0; index < 1; index++ { - ranParameterItem := e2ap.RANParameterItem{} - ranParameterItem.RanParameterID = 33 - ranParameterItem.RanParameterValue.ValueIntPresent = true - ranParameterItem.RanParameterValue.ValueInt = 100 - p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList = - append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList, ranParameterItem) - } - } + + p.Req.ActionSetups[0].ActionDefinitionChoice.Data.Length = 1 + p.Req.ActionSetups[0].ActionDefinitionChoice.Data.Data = make([]uint8, p.Req.ActionSetups[0].ActionDefinitionChoice.Data.Length) + p.Req.ActionSetups[0].ActionDefinitionChoice.Data.Data[0] = 1 + p.Req.ActionSetups[0].SubsequentAction.Present = true p.Req.ActionSetups[0].SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue p.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitZero