diff options
-rw-r--r-- | src/rspro_util.c | 13 | ||||
-rw-r--r-- | src/rspro_util.h | 2 |
2 files changed, 13 insertions, 2 deletions
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 @@ RsproPDU_t *rspro_gen_ConnectBankReq(const struct app_comp_id *a_cid, 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 @@ struct msgb *rspro_enc_msg(RsproPDU_t *pdu); 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, |