diff --git a/src/rspro/ConfigClientBankReq.c b/src/rspro/ConfigClientBankReq.c
new file mode 100644
index 0000000..f19c9ee
--- /dev/null
+++ b/src/rspro/ConfigClientBankReq.c
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#include "ConfigClientBankReq.h"
+
+static asn_TYPE_member_t asn_MBR_ConfigClientBankReq_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankReq, bankSlot),
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_BankSlot,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"bankSlot"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankReq, bankd),
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_IpPort,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"bankd"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ConfigClientBankReq_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigClientBankReq_tag2el_1[] = {
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* bankSlot */
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* bankd */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientBankReq_specs_1 = {
+	sizeof(struct ConfigClientBankReq),
+	offsetof(struct ConfigClientBankReq, _asn_ctx),
+	asn_MAP_ConfigClientBankReq_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* Start extensions */
+	3	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigClientBankReq = {
+	"ConfigClientBankReq",
+	"ConfigClientBankReq",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	0, 0,	/* No UPER support, use "-gen-PER" to enable */
+	0, 0,	/* No APER support, use "-gen-PER" to enable */
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_ConfigClientBankReq_tags_1,
+	sizeof(asn_DEF_ConfigClientBankReq_tags_1)
+		/sizeof(asn_DEF_ConfigClientBankReq_tags_1[0]), /* 1 */
+	asn_DEF_ConfigClientBankReq_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ConfigClientBankReq_tags_1)
+		/sizeof(asn_DEF_ConfigClientBankReq_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_ConfigClientBankReq_1,
+	2,	/* Elements count */
+	&asn_SPC_ConfigClientBankReq_specs_1	/* Additional specs */
+};
+
diff --git a/src/rspro/ConfigClientBankRes.c b/src/rspro/ConfigClientBankRes.c
new file mode 100644
index 0000000..4b3c18a
--- /dev/null
+++ b/src/rspro/ConfigClientBankRes.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#include "ConfigClientBankRes.h"
+
+static asn_TYPE_member_t asn_MBR_ConfigClientBankRes_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankRes, result),
+		(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
+		0,
+		&asn_DEF_ResultCode,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"result"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ConfigClientBankRes_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigClientBankRes_tag2el_1[] = {
+    { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientBankRes_specs_1 = {
+	sizeof(struct ConfigClientBankRes),
+	offsetof(struct ConfigClientBankRes, _asn_ctx),
+	asn_MAP_ConfigClientBankRes_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigClientBankRes = {
+	"ConfigClientBankRes",
+	"ConfigClientBankRes",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	0, 0,	/* No UPER support, use "-gen-PER" to enable */
+	0, 0,	/* No APER support, use "-gen-PER" to enable */
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_ConfigClientBankRes_tags_1,
+	sizeof(asn_DEF_ConfigClientBankRes_tags_1)
+		/sizeof(asn_DEF_ConfigClientBankRes_tags_1[0]), /* 1 */
+	asn_DEF_ConfigClientBankRes_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ConfigClientBankRes_tags_1)
+		/sizeof(asn_DEF_ConfigClientBankRes_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_ConfigClientBankRes_1,
+	1,	/* Elements count */
+	&asn_SPC_ConfigClientBankRes_specs_1	/* Additional specs */
+};
+
diff --git a/src/rspro/ConfigClientIdReq.c b/src/rspro/ConfigClientIdReq.c
new file mode 100644
index 0000000..570013a
--- /dev/null
+++ b/src/rspro/ConfigClientIdReq.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#include "ConfigClientIdReq.h"
+
+static asn_TYPE_member_t asn_MBR_ConfigClientIdReq_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientIdReq, clientSlot),
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ClientSlot,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"clientSlot"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ConfigClientIdReq_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigClientIdReq_tag2el_1[] = {
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* clientSlot */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientIdReq_specs_1 = {
+	sizeof(struct ConfigClientIdReq),
+	offsetof(struct ConfigClientIdReq, _asn_ctx),
+	asn_MAP_ConfigClientIdReq_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigClientIdReq = {
+	"ConfigClientIdReq",
+	"ConfigClientIdReq",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	0, 0,	/* No UPER support, use "-gen-PER" to enable */
+	0, 0,	/* No APER support, use "-gen-PER" to enable */
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_ConfigClientIdReq_tags_1,
+	sizeof(asn_DEF_ConfigClientIdReq_tags_1)
+		/sizeof(asn_DEF_ConfigClientIdReq_tags_1[0]), /* 1 */
+	asn_DEF_ConfigClientIdReq_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ConfigClientIdReq_tags_1)
+		/sizeof(asn_DEF_ConfigClientIdReq_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_ConfigClientIdReq_1,
+	1,	/* Elements count */
+	&asn_SPC_ConfigClientIdReq_specs_1	/* Additional specs */
+};
+
diff --git a/src/rspro/ConfigClientIdRes.c b/src/rspro/ConfigClientIdRes.c
new file mode 100644
index 0000000..a8b0691
--- /dev/null
+++ b/src/rspro/ConfigClientIdRes.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#include "ConfigClientIdRes.h"
+
+static asn_TYPE_member_t asn_MBR_ConfigClientIdRes_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientIdRes, result),
+		(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
+		0,
+		&asn_DEF_ResultCode,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"result"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ConfigClientIdRes_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigClientIdRes_tag2el_1[] = {
+    { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientIdRes_specs_1 = {
+	sizeof(struct ConfigClientIdRes),
+	offsetof(struct ConfigClientIdRes, _asn_ctx),
+	asn_MAP_ConfigClientIdRes_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	0,	/* Start extensions */
+	2	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigClientIdRes = {
+	"ConfigClientIdRes",
+	"ConfigClientIdRes",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	0, 0,	/* No UPER support, use "-gen-PER" to enable */
+	0, 0,	/* No APER support, use "-gen-PER" to enable */
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_ConfigClientIdRes_tags_1,
+	sizeof(asn_DEF_ConfigClientIdRes_tags_1)
+		/sizeof(asn_DEF_ConfigClientIdRes_tags_1[0]), /* 1 */
+	asn_DEF_ConfigClientIdRes_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ConfigClientIdRes_tags_1)
+		/sizeof(asn_DEF_ConfigClientIdRes_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_ConfigClientIdRes_1,
+	1,	/* Elements count */
+	&asn_SPC_ConfigClientIdRes_specs_1	/* Additional specs */
+};
+
diff --git a/src/rspro/ConfigClientReq.c b/src/rspro/ConfigClientReq.c
deleted file mode 100644
index 586ac41..0000000
--- a/src/rspro/ConfigClientReq.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
- * From ASN.1 module "RSPRO"
- * 	found in "../../asn1/RSPRO.asn"
- */
-
-#include <osmocom/rspro/ConfigClientReq.h>
-
-static asn_TYPE_member_t asn_MBR_ConfigClientReq_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, clientSlot),
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_ClientSlot,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* PER is not compiled, use -gen-PER */
-		0,
-		"clientSlot"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, bankd),
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_IpPort,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* PER is not compiled, use -gen-PER */
-		0,
-		"bankd"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ConfigClientReq_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ConfigClientReq_tag2el_1[] = {
-    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* clientSlot */
-    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* bankd */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientReq_specs_1 = {
-	sizeof(struct ConfigClientReq),
-	offsetof(struct ConfigClientReq, _asn_ctx),
-	asn_MAP_ConfigClientReq_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* Start extensions */
-	3	/* Stop extensions */
-};
-asn_TYPE_descriptor_t asn_DEF_ConfigClientReq = {
-	"ConfigClientReq",
-	"ConfigClientReq",
-	SEQUENCE_free,
-	SEQUENCE_print,
-	SEQUENCE_constraint,
-	SEQUENCE_decode_ber,
-	SEQUENCE_encode_der,
-	SEQUENCE_decode_xer,
-	SEQUENCE_encode_xer,
-	0, 0,	/* No UPER support, use "-gen-PER" to enable */
-	0, 0,	/* No APER support, use "-gen-PER" to enable */
-	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_ConfigClientReq_tags_1,
-	sizeof(asn_DEF_ConfigClientReq_tags_1)
-		/sizeof(asn_DEF_ConfigClientReq_tags_1[0]), /* 1 */
-	asn_DEF_ConfigClientReq_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ConfigClientReq_tags_1)
-		/sizeof(asn_DEF_ConfigClientReq_tags_1[0]), /* 1 */
-	0,	/* No PER visible constraints */
-	asn_MBR_ConfigClientReq_1,
-	2,	/* Elements count */
-	&asn_SPC_ConfigClientReq_specs_1	/* Additional specs */
-};
-
diff --git a/src/rspro/ConfigClientRes.c b/src/rspro/ConfigClientRes.c
deleted file mode 100644
index e30fda1..0000000
--- a/src/rspro/ConfigClientRes.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
- * From ASN.1 module "RSPRO"
- * 	found in "../../asn1/RSPRO.asn"
- */
-
-#include <osmocom/rspro/ConfigClientRes.h>
-
-static asn_TYPE_member_t asn_MBR_ConfigClientRes_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientRes, result),
-		(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
-		0,
-		&asn_DEF_ResultCode,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* PER is not compiled, use -gen-PER */
-		0,
-		"result"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ConfigClientRes_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ConfigClientRes_tag2el_1[] = {
-    { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientRes_specs_1 = {
-	sizeof(struct ConfigClientRes),
-	offsetof(struct ConfigClientRes, _asn_ctx),
-	asn_MAP_ConfigClientRes_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	0,	/* Start extensions */
-	2	/* Stop extensions */
-};
-asn_TYPE_descriptor_t asn_DEF_ConfigClientRes = {
-	"ConfigClientRes",
-	"ConfigClientRes",
-	SEQUENCE_free,
-	SEQUENCE_print,
-	SEQUENCE_constraint,
-	SEQUENCE_decode_ber,
-	SEQUENCE_encode_der,
-	SEQUENCE_decode_xer,
-	SEQUENCE_encode_xer,
-	0, 0,	/* No UPER support, use "-gen-PER" to enable */
-	0, 0,	/* No APER support, use "-gen-PER" to enable */
-	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_ConfigClientRes_tags_1,
-	sizeof(asn_DEF_ConfigClientRes_tags_1)
-		/sizeof(asn_DEF_ConfigClientRes_tags_1[0]), /* 1 */
-	asn_DEF_ConfigClientRes_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ConfigClientRes_tags_1)
-		/sizeof(asn_DEF_ConfigClientRes_tags_1[0]), /* 1 */
-	0,	/* No PER visible constraints */
-	asn_MBR_ConfigClientRes_1,
-	1,	/* Elements count */
-	&asn_SPC_ConfigClientRes_specs_1	/* Additional specs */
-};
-
diff --git a/src/rspro/ErrorCode.c b/src/rspro/ErrorCode.c
index 7b404fc..e603c7a 100644
--- a/src/rspro/ErrorCode.c
+++ b/src/rspro/ErrorCode.c
@@ -4,7 +4,7 @@
  * 	found in "../../asn1/RSPRO.asn"
  */
 
-#include "ErrorCode.h"
+#include <osmocom/rspro/ErrorCode.h>
 
 int
 ErrorCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
diff --git a/src/rspro/ErrorInd.c b/src/rspro/ErrorInd.c
index 63e96d4..47e479a 100644
--- a/src/rspro/ErrorInd.c
+++ b/src/rspro/ErrorInd.c
@@ -4,7 +4,7 @@
  * 	found in "../../asn1/RSPRO.asn"
  */
 
-#include "ErrorInd.h"
+#include <osmocom/rspro/ErrorInd.h>
 
 static asn_TYPE_member_t asn_MBR_ErrorInd_1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct ErrorInd, sender),
diff --git a/src/rspro/ErrorSeverity.c b/src/rspro/ErrorSeverity.c
index cae6447..1a33063 100644
--- a/src/rspro/ErrorSeverity.c
+++ b/src/rspro/ErrorSeverity.c
@@ -4,7 +4,7 @@
  * 	found in "../../asn1/RSPRO.asn"
  */
 
-#include "ErrorSeverity.h"
+#include <osmocom/rspro/ErrorSeverity.h>
 
 int
 ErrorSeverity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
diff --git a/src/rspro/ErrorString.c b/src/rspro/ErrorString.c
index 82c4700..98d0eda 100644
--- a/src/rspro/ErrorString.c
+++ b/src/rspro/ErrorString.c
@@ -4,7 +4,7 @@
  * 	found in "../../asn1/RSPRO.asn"
  */
 
-#include "ErrorString.h"
+#include <osmocom/rspro/ErrorString.h>
 
 static int check_permitted_alphabet_1(const void *sptr) {
 	/* The underlying type is IA5String */
diff --git a/src/rspro/Makefile.am b/src/rspro/Makefile.am
index 4d3f18a..91f0f35 100644
--- a/src/rspro/Makefile.am
+++ b/src/rspro/Makefile.am
@@ -9,8 +9,10 @@
 	ComponentIdentity.c \
 	ComponentName.c \
 	ComponentType.c \
-	ConfigClientReq.c \
-	ConfigClientRes.c \
+	ConfigClientIdReq.c \
+	ConfigClientIdRes.c \
+	ConfigClientBankReq.c \
+	ConfigClientBankRes.c \
 	ConnectBankReq.c \
 	ConnectBankRes.c \
 	ConnectClientReq.c \
@@ -52,8 +54,10 @@
 	ComponentIdentity.h \
 	ComponentName.h \
 	ComponentType.h \
-	ConfigClientReq.h \
-	ConfigClientRes.h \
+	ConfigClientIdReq.h \
+	ConfigClientIdRes.h \
+	ConfigClientBankReq.h \
+	ConfigClientBankRes.h \
 	ConnectBankReq.h \
 	ConnectBankRes.h \
 	ConnectClientReq.h \
diff --git a/src/rspro/RsproPDUchoice.c b/src/rspro/RsproPDUchoice.c
index e842876..a5f7161 100644
--- a/src/rspro/RsproPDUchoice.c
+++ b/src/rspro/RsproPDUchoice.c
@@ -79,23 +79,41 @@
 		0,
 		"removeMappingRes"
 		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientReq),
+	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientIdReq),
 		(ASN_TAG_CLASS_CONTEXT | (8 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_ConfigClientReq,
+		&asn_DEF_ConfigClientIdReq,
 		0,	/* Defer constraints checking to the member type */
 		0,	/* PER is not compiled, use -gen-PER */
 		0,
-		"configClientReq"
+		"configClientIdReq"
 		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientRes),
+	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientIdRes),
 		(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_ConfigClientRes,
+		&asn_DEF_ConfigClientIdRes,
 		0,	/* Defer constraints checking to the member type */
 		0,	/* PER is not compiled, use -gen-PER */
 		0,
-		"configClientRes"
+		"configClientIdRes"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientBankReq),
+		(ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ConfigClientBankReq,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"configClientBankReq"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientBankRes),
+		(ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ConfigClientBankRes,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* PER is not compiled, use -gen-PER */
+		0,
+		"configClientBankRes"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.errorInd),
 		(ASN_TAG_CLASS_CONTEXT | (16 << 2)),
@@ -170,15 +188,17 @@
     { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* createMappingRes */
     { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* removeMappingReq */
     { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* removeMappingRes */
-    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* configClientReq */
-    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* configClientRes */
-    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 11, 0, 0 }, /* setAtrReq */
-    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 12, 0, 0 }, /* setAtrRes */
-    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 13, 0, 0 }, /* tpduModemToCard */
-    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 14, 0, 0 }, /* tpduCardToModem */
-    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 15, 0, 0 }, /* clientSlotStatusInd */
-    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 16, 0, 0 }, /* bankSlotStatusInd */
-    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 10, 0, 0 } /* errorInd */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* configClientIdReq */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* configClientIdRes */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 13, 0, 0 }, /* setAtrReq */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 14, 0, 0 }, /* setAtrRes */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 15, 0, 0 }, /* tpduModemToCard */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 16, 0, 0 }, /* tpduCardToModem */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 17, 0, 0 }, /* clientSlotStatusInd */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 18, 0, 0 }, /* bankSlotStatusInd */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 12, 0, 0 }, /* errorInd */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 10, 0, 0 }, /* configClientBankReq */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 11, 0, 0 } /* configClientBankRes */
 };
 static asn_CHOICE_specifics_t asn_SPC_RsproPDUchoice_specs_1 = {
 	sizeof(struct RsproPDUchoice),
@@ -186,9 +206,9 @@
 	offsetof(struct RsproPDUchoice, present),
 	sizeof(((struct RsproPDUchoice *)0)->present),
 	asn_MAP_RsproPDUchoice_tag2el_1,
-	17,	/* Count of tags in the map */
+	19,	/* Count of tags in the map */
 	0,
-	17	/* Extensions start */
+	19	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice = {
 	"RsproPDUchoice",
@@ -209,7 +229,7 @@
 	0,	/* No tags (count) */
 	0,	/* No PER visible constraints */
 	asn_MBR_RsproPDUchoice_1,
-	17,	/* Elements count */
+	19,	/* Elements count */
 	&asn_SPC_RsproPDUchoice_specs_1	/* Additional specs */
 };
 
