Starting to parse NAS Attach Request message to get IMSI

This commit is contained in:
Pedro Alvarez 2017-10-25 19:17:36 +01:00
parent 79c0daea91
commit 70f3bcaeba
2 changed files with 83 additions and 2 deletions

View File

@ -27,6 +27,7 @@
#define S1AP_H
#include "srslte/asn1/liblte_s1ap.h"
#include "srslte/asn1/liblte_mme.h"
#include "srslte/common/common.h"
#include "srslte/common/log.h"
@ -64,7 +65,9 @@ public:
bool send_s1_setup_failure(struct sctp_sndrcvinfo *enb_sri);
bool send_s1_setup_response(struct sctp_sndrcvinfo *enb_sri);
bool handle_initial_ue_message(LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT *msg, struct sctp_sndrcvinfo *enb_sri);
void print_enb_ctx_info(const enb_ctx_t &enb_ctx);
private:

View File

@ -231,7 +231,85 @@ s1ap::handle_s1_setup_request(LIBLTE_S1AP_MESSAGE_S1SETUPREQUEST_STRUCT *msg, st
bool
s1ap::handle_initial_ue_message(LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT *msg, struct sctp_sndrcvinfo *enb_sri)
{
m_s1ap_log->console("Received Initial UE Message\n");
m_s1ap_log->info("Received Initial UE Message\n");
//msg->eNB_UE_S1AP_ID;
LIBLTE_MME_ATTACH_REQUEST_MSG_STRUCT attach_req;
if(!liblte_mme_pack_attach_request_msg(&attach_req, (LIBLTE_BYTE_MSG_STRUCT *) &msg->NAS_PDU.buffer))
{
m_s1ap_log->console("Error unpacking NAS attach request.");
}
else{
m_s1ap_log->console("Unpacked NAS attach request.");
}
/*Log unhandled IEs*/
if(msg->S_TMSI_present){
m_s1ap_log->warning("S-TMSI present, but not handled.");
}
if(msg->CSG_Id_present){
m_s1ap_log->warning("S-TMSI present, but not handled.");
}
if(msg->GUMMEI_ID_present){
m_s1ap_log->warning("GUMMEI ID present, but not handled.");
}
if(msg->CellAccessMode_present){
m_s1ap_log->warning("Cell Access Mode present, but not handled.");
}
if(msg->GW_TransportLayerAddress_present){
m_s1ap_log->warning("GW Transport Layer present, but not handled.");
}
if(msg->GW_TransportLayerAddress_present){
m_s1ap_log->warning("GW Transport Layer present, but not handled.");
}
if(msg->RelayNode_Indicator_present){
m_s1ap_log->warning("Relay Node Indicator present, but not handled.");
}
if(msg->GUMMEIType_present){
m_s1ap_log->warning("GUMMEI Type present, but not handled.");
}
if(msg->Tunnel_Information_for_BBF_present){
m_s1ap_log->warning("Tunnel Information for BBF present, but not handled.");
}
if(msg->SIPTO_L_GW_TransportLayerAddress_present){
m_s1ap_log->warning("SIPTO GW Transport Layer Address present, but not handled.");
}
if(msg->LHN_ID_present){
m_s1ap_log->warning("LHN Id present, but not handled.");
}
/*
typedef struct{
bool ext;
LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID;
LIBLTE_S1AP_NAS_PDU_STRUCT NAS_PDU;
LIBLTE_S1AP_TAI_STRUCT TAI;
LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI;
LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM_EXT RRC_Establishment_Cause;
LIBLTE_S1AP_S_TMSI_STRUCT S_TMSI;
bool S_TMSI_present;
LIBLTE_S1AP_CSG_ID_STRUCT CSG_Id;
bool CSG_Id_present;
LIBLTE_S1AP_GUMMEI_STRUCT GUMMEI_ID;
bool GUMMEI_ID_present;
LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT CellAccessMode;
bool CellAccessMode_present;
LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT GW_TransportLayerAddress;
bool GW_TransportLayerAddress_present;
LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM_EXT RelayNode_Indicator;
bool RelayNode_Indicator_present;
LIBLTE_S1AP_GUMMEITYPE_ENUM_EXT GUMMEIType;
bool GUMMEIType_present;
LIBLTE_S1AP_TUNNELINFORMATION_STRUCT Tunnel_Information_for_BBF;
bool Tunnel_Information_for_BBF_present;
LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT SIPTO_L_GW_TransportLayerAddress;
bool SIPTO_L_GW_TransportLayerAddress_present;
LIBLTE_S1AP_LHN_ID_STRUCT LHN_ID;
bool LHN_ID_present;
}LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT;
*/
//Send Reply to eNB
//ssize_t n_sent = sctp_send(m_s1mme,reply_msg.msg, reply_msg.N_bytes, enb_sri, 0);
//if(n_sent == -1)