mirror of https://github.com/PentHertz/srsLTE.git
Added some more debug infor to error prints. Making sure that packet is not sent from the eNB if there is an error in the GTP-U header packing. Fixed error in checking msg_type.
This commit is contained in:
parent
efffd3dec9
commit
e925ef0a42
|
@ -89,19 +89,19 @@ inline bool gtpu_supported_flags_check(gtpu_header_t *header, srslte::log *gtpu_
|
|||
{
|
||||
//flags
|
||||
if( (header->flags & GTPU_FLAGS_VERSION_MASK) != GTPU_FLAGS_VERSION_V1 ) {
|
||||
gtpu_log->error("gtpu_write_header - Unhandled GTP-U Version.\n");
|
||||
gtpu_log->error("gtpu_header - Unhandled GTP-U Version. Flags: 0x%x\n", header->flags);
|
||||
return false;
|
||||
}
|
||||
if( !(header->flags & GTPU_FLAGS_GTP_PROTOCOL) ) {
|
||||
gtpu_log->error("gtpu_write_header - Unhandled Protocol Type.\n");
|
||||
gtpu_log->error("gtpu_header - Unhandled Protocol Type. Flags: 0x%x\n\n", header->flags);
|
||||
return false;
|
||||
}
|
||||
if( !(header->flags & GTPU_FLAGS_EXTENDED_HDR) ) {
|
||||
gtpu_log->error("gtpu_write_header - Unhandled Header Extensions.\n");
|
||||
if( header->flags & GTPU_FLAGS_EXTENDED_HDR ) {
|
||||
gtpu_log->error("gtpu_header - Unhandled Header Extensions. Flags: 0x%x\n\n", header->flags);
|
||||
return false;
|
||||
}
|
||||
if( !(header->flags & GTPU_FLAGS_PACKET_NUM) ) {
|
||||
gtpu_log->error("gtpu_write_header - Unhandled Packet Number.\n");
|
||||
if( header->flags & GTPU_FLAGS_PACKET_NUM ) {
|
||||
gtpu_log->error("gtpu_header - Unhandled Packet Number. Flags: 0x%x\n\n", header->flags);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -110,8 +110,8 @@ inline bool gtpu_supported_flags_check(gtpu_header_t *header, srslte::log *gtpu_
|
|||
inline bool gtpu_supported_msg_type_check(gtpu_header_t *header, srslte::log *gtpu_log)
|
||||
{
|
||||
//msg_tpye
|
||||
if(header->message_type != GTPU_MSG_DATA_PDU || header->message_type != GTPU_MSG_ECHO_REQUEST) {
|
||||
gtpu_log->error("gtpu_write_header - Unhandled message type: 0x%x\n", header->message_type);
|
||||
if( header->message_type != GTPU_MSG_DATA_PDU && header->message_type != GTPU_MSG_ECHO_REQUEST ) {
|
||||
gtpu_log->error("gtpu_header - Unhandled message type: 0x%x\n", header->message_type);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -39,11 +39,13 @@ bool gtpu_write_header(gtpu_header_t *header, srslte::byte_buffer_t *pdu, srslte
|
|||
{
|
||||
//flags
|
||||
if(!gtpu_supported_flags_check(header,gtpu_log)){
|
||||
gtpu_log->error("gtpu_write_header - Unhandled GTP-U Flags. Flags: 0x%x\n", header->flags);
|
||||
return false;
|
||||
}
|
||||
|
||||
//msg type
|
||||
if(!gtpu_supported_msg_type_check(header,gtpu_log)){
|
||||
gtpu_log->error("gtpu_write_header - Unhandled GTP-U Message Type. Message Type: 0x%x\n", header->message_type);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -114,11 +116,13 @@ bool gtpu_read_header(srslte::byte_buffer_t *pdu, gtpu_header_t *header, srslte:
|
|||
|
||||
//flags
|
||||
if(!gtpu_supported_flags_check(header,gtpu_log)){
|
||||
gtpu_log->error("gtpu_read_header - Unhandled GTP-U Flags. Flags: 0x%x\n", header->flags);
|
||||
return false;
|
||||
}
|
||||
|
||||
//message_type
|
||||
if(!gtpu_supported_msg_type_check(header,gtpu_log)){
|
||||
gtpu_log->error("gtpu_read_header - Unhandled GTP-U Message Type. Flags: 0x%x\n", header->message_type);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,24 +40,6 @@
|
|||
|
||||
namespace srsenb {
|
||||
|
||||
/****************************************************************************
|
||||
* GTPU Header
|
||||
* Ref: 3GPP TS 29.281 v10.1.0 Section 5
|
||||
*
|
||||
* | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|
||||
*
|
||||
* 1 | Version |PT | * | E | S |PN |
|
||||
* 2 | Message Type |
|
||||
* 3 | Length (1st Octet) |
|
||||
* 4 | Length (2nd Octet) |
|
||||
* 5 | TEID (1st Octet) |
|
||||
* 6 | TEID (2nd Octet) |
|
||||
* 7 | TEID (3rd Octet) |
|
||||
* 8 | TEID (4th Octet) |
|
||||
***************************************************************************/
|
||||
|
||||
#define GTPU_HEADER_LEN 8
|
||||
|
||||
class gtpu
|
||||
:public gtpu_interface_rrc
|
||||
,public gtpu_interface_pdcp
|
||||
|
|
|
@ -132,7 +132,10 @@ void gtpu::write_pdu(uint16_t rnti, uint32_t lcid, srslte::byte_buffer_t* pdu)
|
|||
servaddr.sin_addr.s_addr = htonl(rnti_bearers[rnti].spgw_addrs[lcid]);
|
||||
servaddr.sin_port = htons(GTPU_PORT);
|
||||
|
||||
gtpu_write_header(&header, pdu, gtpu_log);
|
||||
if(!gtpu_write_header(&header, pdu, gtpu_log)){
|
||||
gtpu_log->error("Error writing GTP-U Header. Flags 0x%x, Message Type 0x%x\n", header.flags, header.message_type);
|
||||
return;
|
||||
}
|
||||
if (sendto(fd, pdu->msg, pdu->N_bytes, MSG_EOR, (struct sockaddr*)&servaddr, sizeof(struct sockaddr_in))<0) {
|
||||
perror("sendto");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue