<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/16491">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">RSPRO: Add new ResetState{Req,Res}<br><br>These commands are introduced to enable the server to request the<br>full reset of all state in a client or bankd. This is particularly<br>useful in TTCN-3 tests, where we typically want to reset the state<br>between tests.<br><br>Change-Id: I442bab523486bbdf2faa8028f8972cd0af795303<br>---<br>M asn1/RSPRO.asn<br>M include/osmocom/rspro/Makefile.am<br>A include/osmocom/rspro/ResetStateReq.h<br>A include/osmocom/rspro/ResetStateRes.h<br>M include/osmocom/rspro/RsproPDUchoice.h<br>M src/rspro/ConfigClientBankReq.c<br>M src/rspro/ConfigClientBankRes.c<br>M src/rspro/ConfigClientIdReq.c<br>M src/rspro/ConfigClientIdRes.c<br>M src/rspro/Makefile.am<br>A src/rspro/ResetStateReq.c<br>A src/rspro/ResetStateRes.c<br>M src/rspro/RsproPDUchoice.c<br>M src/rspro_util.c<br>M src/rspro_util.h<br>15 files changed, 269 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/91/16491/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/asn1/RSPRO.asn b/asn1/RSPRO.asn</span><br><span>index 65152ec..1b1be6d 100644</span><br><span>--- a/asn1/RSPRO.asn</span><br><span>+++ b/asn1/RSPRO.asn</span><br><span>@@ -308,6 +308,17 @@</span><br><span> ...</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+-- SERVER->*: request reset of all state on peer side</span><br><span style="color: hsl(120, 100%, 40%);">+ResetStateReq ::= SEQUENCE {</span><br><span style="color: hsl(120, 100%, 40%);">+ ...</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+-- *->SERVER: confirm reset of all state on peer side</span><br><span style="color: hsl(120, 100%, 40%);">+ResetStateRes ::= SEQUENCE {</span><br><span style="color: hsl(120, 100%, 40%);">+ result ResultCode,</span><br><span style="color: hsl(120, 100%, 40%);">+ ...</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> ----------------------------------------------------------------------</span><br><span> -- PDU</span><br><span>@@ -328,6 +339,8 @@</span><br><span> configClientBankReq [17] ConfigClientBankReq,</span><br><span> configClientBankRes [18] ConfigClientBankRes,</span><br><span> errorInd [16] ErrorInd,</span><br><span style="color: hsl(120, 100%, 40%);">+ resetStateReq [19] ResetStateReq,</span><br><span style="color: hsl(120, 100%, 40%);">+ resetStateRes [20] ResetStateRes,</span><br><span> -- APDUs etc.</span><br><span> setAtrReq [10] SetAtrReq,</span><br><span> setAtrRes [11] SetAtrRes,</span><br><span>diff --git a/include/osmocom/rspro/Makefile.am b/include/osmocom/rspro/Makefile.am</span><br><span>index 4ffaa32..7549ffb 100644</span><br><span>--- a/include/osmocom/rspro/Makefile.am</span><br><span>+++ b/include/osmocom/rspro/Makefile.am</span><br><span>@@ -31,6 +31,8 @@</span><br><span> PortNumber.h \</span><br><span> RemoveMappingReq.h \</span><br><span> RemoveMappingRes.h \</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateReq.h \</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateRes.h \</span><br><span> ResultCode.h \</span><br><span> RsproPDU.h \</span><br><span> RsproPDUchoice.h \</span><br><span>diff --git a/include/osmocom/rspro/ResetStateReq.h b/include/osmocom/rspro/ResetStateReq.h</span><br><span>new file mode 100644</span><br><span>index 0000000..b56fe43</span><br><span>--- /dev/null</span><br><span>+++ b/include/osmocom/rspro/ResetStateReq.h</span><br><span>@@ -0,0 +1,39 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ * found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _ResetStateReq_H_</span><br><span style="color: hsl(120, 100%, 40%);">+#define _ResetStateReq_H_</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_application.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Including external dependencies */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <constr_SEQUENCE.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* ResetStateReq */</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct ResetStateReq {</span><br><span style="color: hsl(120, 100%, 40%);">+ /*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This type is extensible,</span><br><span style="color: hsl(120, 100%, 40%);">+ * possible extensions are below.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Context for parsing across buffer boundaries */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_struct_ctx_t _asn_ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+} ResetStateReq_t;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Implementation */</span><br><span style="color: hsl(120, 100%, 40%);">+extern asn_TYPE_descriptor_t asn_DEF_ResetStateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* _ResetStateReq_H_ */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_internal.h></span><br><span>diff --git a/include/osmocom/rspro/ResetStateRes.h b/include/osmocom/rspro/ResetStateRes.h</span><br><span>new file mode 100644</span><br><span>index 0000000..622375e</span><br><span>--- /dev/null</span><br><span>+++ b/include/osmocom/rspro/ResetStateRes.h</span><br><span>@@ -0,0 +1,41 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ * found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _ResetStateRes_H_</span><br><span style="color: hsl(120, 100%, 40%);">+#define _ResetStateRes_H_</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_application.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Including external dependencies */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ResultCode.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <constr_SEQUENCE.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* ResetStateRes */</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct ResetStateRes {</span><br><span style="color: hsl(120, 100%, 40%);">+ ResultCode_t result;</span><br><span style="color: hsl(120, 100%, 40%);">+ /*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This type is extensible,</span><br><span style="color: hsl(120, 100%, 40%);">+ * possible extensions are below.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Context for parsing across buffer boundaries */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_struct_ctx_t _asn_ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+} ResetStateRes_t;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Implementation */</span><br><span style="color: hsl(120, 100%, 40%);">+extern asn_TYPE_descriptor_t asn_DEF_ResetStateRes;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* _ResetStateRes_H_ */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_internal.h></span><br><span>diff --git a/include/osmocom/rspro/RsproPDUchoice.h b/include/osmocom/rspro/RsproPDUchoice.h</span><br><span>index d603fa1..ebb2971 100644</span><br><span>--- a/include/osmocom/rspro/RsproPDUchoice.h</span><br><span>+++ b/include/osmocom/rspro/RsproPDUchoice.h</span><br><span>@@ -24,6 +24,8 @@</span><br><span> #include <osmocom/rspro/ConfigClientBankReq.h></span><br><span> #include <osmocom/rspro/ConfigClientBankRes.h></span><br><span> #include <osmocom/rspro/ErrorInd.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ResetStateReq.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ResetStateRes.h></span><br><span> #include <osmocom/rspro/SetAtrReq.h></span><br><span> #include <osmocom/rspro/SetAtrRes.h></span><br><span> #include <osmocom/rspro/TpduModemToCard.h></span><br><span>@@ -52,6 +54,8 @@</span><br><span> RsproPDUchoice_PR_configClientBankReq,</span><br><span> RsproPDUchoice_PR_configClientBankRes,</span><br><span> RsproPDUchoice_PR_errorInd,</span><br><span style="color: hsl(120, 100%, 40%);">+ RsproPDUchoice_PR_resetStateReq,</span><br><span style="color: hsl(120, 100%, 40%);">+ RsproPDUchoice_PR_resetStateRes,</span><br><span> RsproPDUchoice_PR_setAtrReq,</span><br><span> RsproPDUchoice_PR_setAtrRes,</span><br><span> RsproPDUchoice_PR_tpduModemToCard,</span><br><span>@@ -79,6 +83,8 @@</span><br><span> ConfigClientBankReq_t configClientBankReq;</span><br><span> ConfigClientBankRes_t configClientBankRes;</span><br><span> ErrorInd_t errorInd;</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateReq_t resetStateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateRes_t resetStateRes;</span><br><span> SetAtrReq_t setAtrReq;</span><br><span> SetAtrRes_t setAtrRes;</span><br><span> TpduModemToCard_t tpduModemToCard;</span><br><span>diff --git a/src/rspro/ConfigClientBankReq.c b/src/rspro/ConfigClientBankReq.c</span><br><span>index f19c9ee..a4cd21e 100644</span><br><span>--- a/src/rspro/ConfigClientBankReq.c</span><br><span>+++ b/src/rspro/ConfigClientBankReq.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span> * found in "../../asn1/RSPRO.asn"</span><br><span> */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientBankReq.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientBankReq.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientBankReq_1[] = {</span><br><span> { ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankReq, bankSlot),</span><br><span>diff --git a/src/rspro/ConfigClientBankRes.c b/src/rspro/ConfigClientBankRes.c</span><br><span>index 4b3c18a..877100b 100644</span><br><span>--- a/src/rspro/ConfigClientBankRes.c</span><br><span>+++ b/src/rspro/ConfigClientBankRes.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span> * found in "../../asn1/RSPRO.asn"</span><br><span> */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientBankRes.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientBankRes.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientBankRes_1[] = {</span><br><span> { ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankRes, result),</span><br><span>diff --git a/src/rspro/ConfigClientIdReq.c b/src/rspro/ConfigClientIdReq.c</span><br><span>index 570013a..548035c 100644</span><br><span>--- a/src/rspro/ConfigClientIdReq.c</span><br><span>+++ b/src/rspro/ConfigClientIdReq.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span> * found in "../../asn1/RSPRO.asn"</span><br><span> */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientIdReq.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientIdReq.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientIdReq_1[] = {</span><br><span> { ATF_NOFLAGS, 0, offsetof(struct ConfigClientIdReq, clientSlot),</span><br><span>diff --git a/src/rspro/ConfigClientIdRes.c b/src/rspro/ConfigClientIdRes.c</span><br><span>index a8b0691..23f2699 100644</span><br><span>--- a/src/rspro/ConfigClientIdRes.c</span><br><span>+++ b/src/rspro/ConfigClientIdRes.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span> * found in "../../asn1/RSPRO.asn"</span><br><span> */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientIdRes.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientIdRes.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientIdRes_1[] = {</span><br><span> { ATF_NOFLAGS, 0, offsetof(struct ConfigClientIdRes, result),</span><br><span>diff --git a/src/rspro/Makefile.am b/src/rspro/Makefile.am</span><br><span>index 91f0f35..df3ccf4 100644</span><br><span>--- a/src/rspro/Makefile.am</span><br><span>+++ b/src/rspro/Makefile.am</span><br><span>@@ -31,6 +31,8 @@</span><br><span> PortNumber.c \</span><br><span> RemoveMappingReq.c \</span><br><span> RemoveMappingRes.c \</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateReq.c \</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateRes.c \</span><br><span> ResultCode.c \</span><br><span> RsproPDU.c \</span><br><span> RsproPDUchoice.c \</span><br><span>@@ -76,6 +78,8 @@</span><br><span> PortNumber.h \</span><br><span> RemoveMappingReq.h \</span><br><span> RemoveMappingRes.h \</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateReq.h \</span><br><span style="color: hsl(120, 100%, 40%);">+ ResetStateRes.h \</span><br><span> ResultCode.h \</span><br><span> RsproPDU.h \</span><br><span> RsproPDUchoice.h \</span><br><span>diff --git a/src/rspro/ResetStateReq.c b/src/rspro/ResetStateReq.c</span><br><span>new file mode 100644</span><br><span>index 0000000..538a18c</span><br><span>--- /dev/null</span><br><span>+++ b/src/rspro/ResetStateReq.c</span><br><span>@@ -0,0 +1,44 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ * found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "ResetStateReq.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const ber_tlv_tag_t asn_DEF_ResetStateReq_tags_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static asn_SEQUENCE_specifics_t asn_SPC_ResetStateReq_specs_1 = {</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(struct ResetStateReq),</span><br><span style="color: hsl(120, 100%, 40%);">+ offsetof(struct ResetStateReq, _asn_ctx),</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* No top level tags */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* No tags in the map */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, 0, /* Optional elements (not needed) */</span><br><span style="color: hsl(120, 100%, 40%);">+ -1, /* Start extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+ -1 /* Stop extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+asn_TYPE_descriptor_t asn_DEF_ResetStateReq = {</span><br><span style="color: hsl(120, 100%, 40%);">+ "ResetStateReq",</span><br><span style="color: hsl(120, 100%, 40%);">+ "ResetStateReq",</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_free,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_print,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_constraint,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_decode_ber,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_encode_der,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_decode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_encode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, /* No UPER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, /* No APER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* Use generic outmost tag fetcher */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_DEF_ResetStateReq_tags_1,</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(asn_DEF_ResetStateReq_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+ /sizeof(asn_DEF_ResetStateReq_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_DEF_ResetStateReq_tags_1, /* Same as above */</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(asn_DEF_ResetStateReq_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+ /sizeof(asn_DEF_ResetStateReq_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* No PER visible constraints */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, /* No members */</span><br><span style="color: hsl(120, 100%, 40%);">+ &asn_SPC_ResetStateReq_specs_1 /* Additional specs */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/rspro/ResetStateRes.c b/src/rspro/ResetStateRes.c</span><br><span>new file mode 100644</span><br><span>index 0000000..551dcc4</span><br><span>--- /dev/null</span><br><span>+++ b/src/rspro/ResetStateRes.c</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ * found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "ResetStateRes.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static asn_TYPE_member_t asn_MBR_ResetStateRes_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ { ATF_NOFLAGS, 0, offsetof(struct ResetStateRes, result),</span><br><span style="color: hsl(120, 100%, 40%);">+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),</span><br><span style="color: hsl(120, 100%, 40%);">+ 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ &asn_DEF_ResultCode,</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* Defer constraints checking to the member type */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* PER is not compiled, use -gen-PER */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ "result"</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const ber_tlv_tag_t asn_DEF_ResetStateRes_tags_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const asn_TYPE_tag2member_t asn_MAP_ResetStateRes_tag2el_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static asn_SEQUENCE_specifics_t asn_SPC_ResetStateRes_specs_1 = {</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(struct ResetStateRes),</span><br><span style="color: hsl(120, 100%, 40%);">+ offsetof(struct ResetStateRes, _asn_ctx),</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_MAP_ResetStateRes_tag2el_1,</span><br><span style="color: hsl(120, 100%, 40%);">+ 1, /* Count of tags in the map */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, 0, /* Optional elements (not needed) */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* Start extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+ 2 /* Stop extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+asn_TYPE_descriptor_t asn_DEF_ResetStateRes = {</span><br><span style="color: hsl(120, 100%, 40%);">+ "ResetStateRes",</span><br><span style="color: hsl(120, 100%, 40%);">+ "ResetStateRes",</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_free,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_print,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_constraint,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_decode_ber,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_encode_der,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_decode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+ SEQUENCE_encode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, /* No UPER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, 0, /* No APER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* Use generic outmost tag fetcher */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_DEF_ResetStateRes_tags_1,</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(asn_DEF_ResetStateRes_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+ /sizeof(asn_DEF_ResetStateRes_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_DEF_ResetStateRes_tags_1, /* Same as above */</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(asn_DEF_ResetStateRes_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+ /sizeof(asn_DEF_ResetStateRes_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* No PER visible constraints */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_MBR_ResetStateRes_1,</span><br><span style="color: hsl(120, 100%, 40%);">+ 1, /* Elements count */</span><br><span style="color: hsl(120, 100%, 40%);">+ &asn_SPC_ResetStateRes_specs_1 /* Additional specs */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/rspro/RsproPDUchoice.c b/src/rspro/RsproPDUchoice.c</span><br><span>index a5f7161..0d19180 100644</span><br><span>--- a/src/rspro/RsproPDUchoice.c</span><br><span>+++ b/src/rspro/RsproPDUchoice.c</span><br><span>@@ -124,6 +124,24 @@</span><br><span> 0,</span><br><span> "errorInd"</span><br><span> },</span><br><span style="color: hsl(120, 100%, 40%);">+ { ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.resetStateReq),</span><br><span style="color: hsl(120, 100%, 40%);">+ (ASN_TAG_CLASS_CONTEXT | (19 << 2)),</span><br><span style="color: hsl(120, 100%, 40%);">+ -1, /* IMPLICIT tag at current level */</span><br><span style="color: hsl(120, 100%, 40%);">+ &asn_DEF_ResetStateReq,</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* Defer constraints checking to the member type */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* PER is not compiled, use -gen-PER */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ "resetStateReq"</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ { ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.resetStateRes),</span><br><span style="color: hsl(120, 100%, 40%);">+ (ASN_TAG_CLASS_CONTEXT | (20 << 2)),</span><br><span style="color: hsl(120, 100%, 40%);">+ -1, /* IMPLICIT tag at current level */</span><br><span style="color: hsl(120, 100%, 40%);">+ &asn_DEF_ResetStateRes,</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* Defer constraints checking to the member type */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0, /* PER is not compiled, use -gen-PER */</span><br><span style="color: hsl(120, 100%, 40%);">+ 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ "resetStateRes"</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span> { ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.setAtrReq),</span><br><span> (ASN_TAG_CLASS_CONTEXT | (10 << 2)),</span><br><span> -1, /* IMPLICIT tag at current level */</span><br><span>@@ -190,15 +208,17 @@</span><br><span> { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* removeMappingRes */</span><br><span> { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* configClientIdReq */</span><br><span> { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* configClientIdRes */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 13, 0, 0 }, /* setAtrReq */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 14, 0, 0 }, /* setAtrRes */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 15, 0, 0 }, /* tpduModemToCard */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 16, 0, 0 }, /* tpduCardToModem */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 17, 0, 0 }, /* clientSlotStatusInd */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 18, 0, 0 }, /* bankSlotStatusInd */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 15, 0, 0 }, /* setAtrReq */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 16, 0, 0 }, /* setAtrRes */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 17, 0, 0 }, /* tpduModemToCard */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 18, 0, 0 }, /* tpduCardToModem */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 19, 0, 0 }, /* clientSlotStatusInd */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 20, 0, 0 }, /* bankSlotStatusInd */</span><br><span> { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 12, 0, 0 }, /* errorInd */</span><br><span> { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 10, 0, 0 }, /* configClientBankReq */</span><br><span style="color: hsl(0, 100%, 40%);">- { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 11, 0, 0 } /* configClientBankRes */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 11, 0, 0 }, /* configClientBankRes */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 13, 0, 0 }, /* resetStateReq */</span><br><span style="color: hsl(120, 100%, 40%);">+ { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 14, 0, 0 } /* resetStateRes */</span><br><span> };</span><br><span> static asn_CHOICE_specifics_t asn_SPC_RsproPDUchoice_specs_1 = {</span><br><span> sizeof(struct RsproPDUchoice),</span><br><span>@@ -206,9 +226,9 @@</span><br><span> offsetof(struct RsproPDUchoice, present),</span><br><span> sizeof(((struct RsproPDUchoice *)0)->present),</span><br><span> asn_MAP_RsproPDUchoice_tag2el_1,</span><br><span style="color: hsl(0, 100%, 40%);">- 19, /* Count of tags in the map */</span><br><span style="color: hsl(120, 100%, 40%);">+ 21, /* Count of tags in the map */</span><br><span> 0,</span><br><span style="color: hsl(0, 100%, 40%);">- 19 /* Extensions start */</span><br><span style="color: hsl(120, 100%, 40%);">+ 21 /* Extensions start */</span><br><span> };</span><br><span> asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice = {</span><br><span> "RsproPDUchoice",</span><br><span>@@ -229,7 +249,7 @@</span><br><span> 0, /* No tags (count) */</span><br><span> 0, /* No PER visible constraints */</span><br><span> asn_MBR_RsproPDUchoice_1,</span><br><span style="color: hsl(0, 100%, 40%);">- 19, /* Elements count */</span><br><span style="color: hsl(120, 100%, 40%);">+ 21, /* Elements count */</span><br><span> &asn_SPC_RsproPDUchoice_specs_1 /* Additional specs */</span><br><span> };</span><br><span> </span><br><span>diff --git a/src/rspro_util.c b/src/rspro_util.c</span><br><span>index 5c78b60..422aef4 100644</span><br><span>--- a/src/rspro_util.c</span><br><span>+++ b/src/rspro_util.c</span><br><span>@@ -385,6 +385,29 @@</span><br><span> return pdu;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateReq(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!pdu)</span><br><span style="color: hsl(120, 100%, 40%);">+ return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ pdu->version = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+ pdu->msg.present = RsproPDUchoice_PR_resetStateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateRes(e_ResultCode res)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!pdu)</span><br><span style="color: hsl(120, 100%, 40%);">+ return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ pdu->version = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+ pdu->msg.present = RsproPDUchoice_PR_resetStateRes;</span><br><span style="color: hsl(120, 100%, 40%);">+ pdu->msg.choice.resetStateRes.result = res;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> e_ResultCode rspro_get_result(const RsproPDU_t *pdu)</span><br><span> {</span><br><span> switch (pdu->msg.present) {</span><br><span>@@ -402,6 +425,8 @@</span><br><span> return pdu->msg.choice.configClientBankRes.result;</span><br><span> case RsproPDUchoice_PR_setAtrRes:</span><br><span> return pdu->msg.choice.setAtrRes.result;</span><br><span style="color: hsl(120, 100%, 40%);">+ case RsproPDUchoice_PR_resetStateRes:</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu->msg.choice.resetStateRes.result;</span><br><span> default:</span><br><span> OSMO_ASSERT(0);</span><br><span> }</span><br><span>diff --git a/src/rspro_util.h b/src/rspro_util.h</span><br><span>index 444d34a..8c6ae3b 100644</span><br><span>--- a/src/rspro_util.h</span><br><span>+++ b/src/rspro_util.h</span><br><span>@@ -42,6 +42,8 @@</span><br><span> const uint8_t *tpdu, unsigned int tpdu_len);</span><br><span> RsproPDU_t *rspro_gen_TpduCard2Modem(const BankSlot_t *bank, const ClientSlot_t *client,</span><br><span> const uint8_t *tpdu, unsigned int tpdu_len);</span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateReq(void);</span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateRes(e_ResultCode res);</span><br><span> </span><br><span> e_ResultCode rspro_get_result(const RsproPDU_t *pdu);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/16491">change 16491</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-remsim/+/16491"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-remsim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I442bab523486bbdf2faa8028f8972cd0af795303 </div>
<div style="display:none"> Gerrit-Change-Number: 16491 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>