rspro_util: Add ASN_ALLOC_COPY macro and add clientSlot to ConnectClientReq

Change-Id: I0bc2ba7b7e7787fc5ef9d730af35767b00137513
diff --git a/src/rspro_util.c b/src/rspro_util.c
index 4da9270..9f51257 100644
--- a/src/rspro_util.c
+++ b/src/rspro_util.c
@@ -8,6 +8,16 @@
 
 #include "rspro_util.h"
 
+#define ASN_ALLOC_COPY(out, in) \
+do {						\
+	if (in)	 {				\
+		out = CALLOC(1, sizeof(*in));	\
+		OSMO_ASSERT(out);		\
+		memcpy(out, in, sizeof(*in));	\
+	}					\
+} while (0)
+
+
 struct msgb *rspro_msgb_alloc(void)
 {
 	return msgb_alloc_headroom(1024, 8, "RSPRO");
@@ -95,13 +105,14 @@
 	return pdu;
 }
 
-RsproPDU_t *rspro_gen_ConnectClientReq(const struct app_comp_id *a_cid)
+RsproPDU_t *rspro_gen_ConnectClientReq(const struct app_comp_id *a_cid, const ClientSlot_t *client)
 {
 	RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
 	if (!pdu)
 		return NULL;
 	pdu->msg.present = RsproPDUchoice_PR_connectClientReq;
 	fill_comp_id(&pdu->msg.choice.connectClientReq.identity, a_cid);
+	ASN_ALLOC_COPY(pdu->msg.choice.connectClientReq.clientSlot, client);
 
 	return pdu;
 }
diff --git a/src/rspro_util.h b/src/rspro_util.h
index 87b2b97..8590a1b 100644
--- a/src/rspro_util.h
+++ b/src/rspro_util.h
@@ -22,7 +22,7 @@
 RsproPDU_t *rspro_dec_msg(struct msgb *msg);
 RsproPDU_t *rspro_gen_ConnectBankReq(const struct app_comp_id *a_cid,
 					uint16_t bank_id, uint16_t num_slots);
-RsproPDU_t *rspro_gen_ConnectClientReq(const struct app_comp_id *a_cid);
+RsproPDU_t *rspro_gen_ConnectClientReq(const struct app_comp_id *a_cid, const ClientSlot_t *client);
 RsproPDU_t *rspro_gen_CreateMappingReq(const ClientSlot_t *client, const BankSlot_t *bank);
 RsproPDU_t *rspro_gen_ConfigClientReq(const ClientSlot_t *client, uint32_t ip, uint16_t port);
 RsproPDU_t *rspro_gen_SetAtrReq(uint16_t client_id, uint16_t slot_nr, const uint8_t *atr,