jolly has uploaded this change for review.

View Change

WIP: Add eimId to GetEimConfigurationDataRequest

Add search criteria eimId to GetEimConfigurationDataRequest. The IoT
eUICC emulation does not require this, because it returns an empty
result anyway.

Reference: SGP.23 Section: 5.9.18

Related: SYS#8101
Change-Id: Ia8aacd9d5b8ec7a9d524a446114557efdb0614f5
---
M asn1/SGP32Definitions.asn
M src/ipa/libasn/GetEimConfigurationDataRequest.c
M src/ipa/libasn/GetEimConfigurationDataRequest.h
3 files changed, 135 insertions(+), 5 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/72/43072/1
diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn
index d7155c8..b9746ea 100644
--- a/asn1/SGP32Definitions.asn
+++ b/asn1/SGP32Definitions.asn
@@ -644,6 +644,9 @@
-- Section 5.9.18
-- ASN1START
GetEimConfigurationDataRequest ::= [85] SEQUENCE { -- Tag 'BF55'
+ searchCriteria CHOICE {
+ eimId [0] UTF8String (SIZE(1..128))
+ } OPTIONAL
}
-- ASN1STOP
-- ASN1START
diff --git a/src/ipa/libasn/GetEimConfigurationDataRequest.c b/src/ipa/libasn/GetEimConfigurationDataRequest.c
index b321df9..d33b8fb 100644
--- a/src/ipa/libasn/GetEimConfigurationDataRequest.c
+++ b/src/ipa/libasn/GetEimConfigurationDataRequest.c
@@ -7,17 +7,120 @@

#include "GetEimConfigurationDataRequest.h"

+static int
+memb_eimId_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const UTF8String_t *st = (const UTF8String_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 = UTF8String_length(st);
+ if((ssize_t)size < 0) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: UTF-8: broken encoding (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if((size >= 1 && size <= 128)) {
+ /* 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_oer_constraints_t asn_OER_memb_eimId_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_eimId_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_searchCriteria_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_searchCriteria_constr_2 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_searchCriteria_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GetEimConfigurationDataRequest__searchCriteria, choice.eimId),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UTF8String,
+ 0,
+ { &asn_OER_memb_eimId_constr_3, &asn_PER_memb_eimId_constr_3, memb_eimId_constraint_2 },
+ 0, 0, /* No default value */
+ "eimId"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_searchCriteria_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eimId */
+};
+static asn_CHOICE_specifics_t asn_SPC_searchCriteria_specs_2 = {
+ sizeof(struct GetEimConfigurationDataRequest__searchCriteria),
+ offsetof(struct GetEimConfigurationDataRequest__searchCriteria, _asn_ctx),
+ offsetof(struct GetEimConfigurationDataRequest__searchCriteria, present),
+ sizeof(((struct GetEimConfigurationDataRequest__searchCriteria *)0)->present),
+ asn_MAP_searchCriteria_tag2el_2,
+ 1, /* Count of tags in the map */
+ 0, 0,
+ 1 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_searchCriteria_2 = {
+ "searchCriteria",
+ "searchCriteria",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_searchCriteria_constr_2, &asn_PER_type_searchCriteria_constr_2, CHOICE_constraint },
+ asn_MBR_searchCriteria_2,
+ 1, /* Elements count */
+ &asn_SPC_searchCriteria_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_GetEimConfigurationDataRequest_1[] = {
+ { ATF_POINTER, 1, offsetof(struct GetEimConfigurationDataRequest, searchCriteria),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_searchCriteria_2,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "searchCriteria"
+ },
+};
+static const int asn_MAP_GetEimConfigurationDataRequest_oms_1[] = { 0 };
static const ber_tlv_tag_t asn_DEF_GetEimConfigurationDataRequest_tags_1[] = {
(ASN_TAG_CLASS_CONTEXT | (85 << 2)),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
+static const asn_TYPE_tag2member_t asn_MAP_GetEimConfigurationDataRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* searchCriteria */
+};
static asn_SEQUENCE_specifics_t asn_SPC_GetEimConfigurationDataRequest_specs_1 = {
sizeof(struct GetEimConfigurationDataRequest),
offsetof(struct GetEimConfigurationDataRequest, _asn_ctx),
- 0, /* No top level tags */
- 0, /* No tags in the map */
- 0, 0, 0, /* Optional elements (not needed) */
- -1, /* First extension addition */
+ asn_MAP_GetEimConfigurationDataRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ asn_MAP_GetEimConfigurationDataRequest_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* First extension addition */
};
asn_TYPE_descriptor_t asn_DEF_GetEimConfigurationDataRequest = {
"GetEimConfigurationDataRequest",
@@ -30,7 +133,8 @@
sizeof(asn_DEF_GetEimConfigurationDataRequest_tags_1)
/sizeof(asn_DEF_GetEimConfigurationDataRequest_tags_1[0]), /* 2 */
{ 0, 0, SEQUENCE_constraint },
- 0, 0, /* No members */
+ asn_MBR_GetEimConfigurationDataRequest_1,
+ 1, /* Elements count */
&asn_SPC_GetEimConfigurationDataRequest_specs_1 /* Additional specs */
};

diff --git a/src/ipa/libasn/GetEimConfigurationDataRequest.h b/src/ipa/libasn/GetEimConfigurationDataRequest.h
index 385ea6e..ab0c3f2 100644
--- a/src/ipa/libasn/GetEimConfigurationDataRequest.h
+++ b/src/ipa/libasn/GetEimConfigurationDataRequest.h
@@ -12,14 +12,37 @@
#include <asn_application.h>

/* Including external dependencies */
+#include <UTF8String.h>
+#include <constr_CHOICE.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

+/* Dependencies */
+typedef enum GetEimConfigurationDataRequest__searchCriteria_PR {
+ GetEimConfigurationDataRequest__searchCriteria_PR_NOTHING, /* No components present */
+ GetEimConfigurationDataRequest__searchCriteria_PR_eimId
+ /* Extensions may appear below */
+
+} GetEimConfigurationDataRequest__searchCriteria_PR;
+
/* GetEimConfigurationDataRequest */
typedef struct GetEimConfigurationDataRequest {
+ struct GetEimConfigurationDataRequest__searchCriteria {
+ GetEimConfigurationDataRequest__searchCriteria_PR present;
+ union GetEimConfigurationDataRequest__searchCriteria_u {
+ UTF8String_t eimId;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } *searchCriteria;
/*
* This type is extensible,
* possible extensions are below.

To view, visit change 43072. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: onomondo-ipa
Gerrit-Branch: master
Gerrit-Change-Id: Ia8aacd9d5b8ec7a9d524a446114557efdb0614f5
Gerrit-Change-Number: 43072
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <andreas@eversberg.eu>