aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-09-23 19:25:46 +0200
committerHarald Welte <laforge@gnumonks.org>2018-09-23 19:25:46 +0200
commit5d16b1c865af636278dec873d1fcccb26efdcf58 (patch)
tree18473dda886eb11e0aa6f728dc4fa4a67bdfbd03
parent84ba234c2cafed76a4458b38d5ede6fe81a575ec (diff)
rspro_util: Add functions to generate TDPU transfer messages
-rw-r--r--src/rspro_util.c30
-rw-r--r--src/rspro_util.h4
2 files changed, 34 insertions, 0 deletions
diff --git a/src/rspro_util.c b/src/rspro_util.c
index c312e42..d55bd30 100644
--- a/src/rspro_util.c
+++ b/src/rspro_util.c
@@ -155,3 +155,33 @@ RsproPDU_t *rspro_gen_SetAtrReq(uint16_t client_id, uint16_t slot_nr, const uint
return pdu;
}
+
+RsproPDU_t *rspro_gen_TpduModem2Card(const ClientSlot_t *client, const BankSlot_t *bank,
+ const uint8_t *tpdu, unsigned int tpdu_len)
+{
+ RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
+ if (!pdu)
+ return NULL;
+ pdu->msg.present = RsproPDUchoice_PR_tpduModemToCard;
+ pdu->msg.choice.tpduModemToCard.fromClientSlot = *client;
+ pdu->msg.choice.tpduModemToCard.toBankSlot = *bank;
+ /* TODO: flags? */
+ OCTET_STRING_fromBuf(&pdu->msg.choice.tpduModemToCard.data, (const char *)tpdu, tpdu_len);
+
+ return pdu;
+}
+
+RsproPDU_t *rspro_gen_TpduCard2Modem(const BankSlot_t *bank, const ClientSlot_t *client,
+ const uint8_t *tpdu, unsigned int tpdu_len)
+{
+ RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
+ if (!pdu)
+ return NULL;
+ pdu->msg.present = RsproPDUchoice_PR_tpduCardToModem;
+ pdu->msg.choice.tpduCardToModem.fromBankSlot = *bank;
+ pdu->msg.choice.tpduCardToModem.toClientSlot = *client;
+ /* TODO: flags? */
+ OCTET_STRING_fromBuf(&pdu->msg.choice.tpduCardToModem.data, (const char *)tpdu, tpdu_len);
+
+ return pdu;
+}
diff --git a/src/rspro_util.h b/src/rspro_util.h
index 8590a1b..ddade5b 100644
--- a/src/rspro_util.h
+++ b/src/rspro_util.h
@@ -27,3 +27,7 @@ RsproPDU_t *rspro_gen_CreateMappingReq(const ClientSlot_t *client, const BankSlo
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,
unsigned int atr_len);
+RsproPDU_t *rspro_gen_TpduModem2Card(const ClientSlot_t *client, const BankSlot_t *bank,
+ const uint8_t *tpdu, unsigned int tpdu_len);
+RsproPDU_t *rspro_gen_TpduCard2Modem(const BankSlot_t *bank, const ClientSlot_t *client,
+ const uint8_t *tpdu, unsigned int tpdu_len);