|
|
@ -112,7 +112,9 @@ bool gtpu_read_ext_header(srsran::byte_buffer_t* pdu,
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (header->next_ext_hdr_type == GTPU_EXT_HEADER_PDCP_PDU_NUMBER) {
|
|
|
|
// TODO: Iterate over next headers until no more extension headers
|
|
|
|
|
|
|
|
switch (header->next_ext_hdr_type) {
|
|
|
|
|
|
|
|
case GTPU_EXT_HEADER_PDCP_PDU_NUMBER:
|
|
|
|
pdu->msg += HEADER_PDCP_PDU_NUMBER_SIZE;
|
|
|
|
pdu->msg += HEADER_PDCP_PDU_NUMBER_SIZE;
|
|
|
|
pdu->N_bytes -= HEADER_PDCP_PDU_NUMBER_SIZE;
|
|
|
|
pdu->N_bytes -= HEADER_PDCP_PDU_NUMBER_SIZE;
|
|
|
|
header->ext_buffer.resize(HEADER_PDCP_PDU_NUMBER_SIZE);
|
|
|
|
header->ext_buffer.resize(HEADER_PDCP_PDU_NUMBER_SIZE);
|
|
|
@ -120,7 +122,14 @@ bool gtpu_read_ext_header(srsran::byte_buffer_t* pdu,
|
|
|
|
header->ext_buffer[i] = **ptr;
|
|
|
|
header->ext_buffer[i] = **ptr;
|
|
|
|
(*ptr)++;
|
|
|
|
(*ptr)++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GTPU_EXT_HEADER_PDU_SESSION_CONTAINER:
|
|
|
|
|
|
|
|
pdu->msg += GTPU_EXT_HEADER_PDU_SESSION_CONTAINER_LEN;
|
|
|
|
|
|
|
|
pdu->N_bytes -= GTPU_EXT_HEADER_PDU_SESSION_CONTAINER_LEN;
|
|
|
|
|
|
|
|
logger.warning("skip parsing of GTPU_EXT_HEADER_PDU_SESSION_CONTAINER");
|
|
|
|
|
|
|
|
// TODO: Save Header Extension
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
logger.error("gtpu_read_header - Unhandled GTP-U Extension Header Type: 0x%x", header->next_ext_hdr_type);
|
|
|
|
logger.error("gtpu_read_header - Unhandled GTP-U Extension Header Type: 0x%x", header->next_ext_hdr_type);
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|