mirror of https://gerrit.osmocom.org/libosmocore
gsm0808: Add a method to create a new DTAP message with a msgb
This commit is contained in:
parent
9d92f0e12c
commit
c25c668106
|
@ -37,6 +37,7 @@ struct msgb *gsm0808_create_assignment_completed(uint8_t rr_cause,
|
|||
uint8_t speech_mode);
|
||||
struct msgb *gsm0808_create_assignment_failure(uint8_t cause, uint8_t *rr_cause);
|
||||
|
||||
struct msgb *gsm0808_create_dtap(struct msgb *msg, uint8_t link_id);
|
||||
void gsm0808_prepend_dtap_header(struct msgb *msg, uint8_t link_id);
|
||||
|
||||
const struct tlv_definition *gsm0808_att_tlvdef();
|
||||
|
|
|
@ -292,6 +292,29 @@ void gsm0808_prepend_dtap_header(struct msgb *msg, uint8_t link_id)
|
|||
hh[2] = msg->len - 3;
|
||||
}
|
||||
|
||||
struct msgb *gsm0808_create_dtap(struct msgb *msg_l3, uint8_t link_id)
|
||||
{
|
||||
struct dtap_header *header;
|
||||
uint8_t *data;
|
||||
struct msgb *msg = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM,
|
||||
"dtap");
|
||||
if (!msg)
|
||||
return NULL;
|
||||
|
||||
/* DTAP header */
|
||||
msg->l3h = msgb_put(msg, sizeof(*header));
|
||||
header = (struct dtap_header *) &msg->l3h[0];
|
||||
header->type = BSSAP_MSG_DTAP;
|
||||
header->link_id = link_id;
|
||||
header->length = msgb_l3len(msg_l3);
|
||||
|
||||
/* Payload */
|
||||
data = msgb_put(msg, header->length);
|
||||
memcpy(data, msg_l3->l3h, header->length);
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
static const struct tlv_definition bss_att_tlvdef = {
|
||||
.def = {
|
||||
[GSM0808_IE_IMSI] = { TLV_TYPE_TLV },
|
||||
|
|
Loading…
Reference in New Issue