Commit e8bb5f3b authored by gauthier's avatar gauthier

itti_msg_sxyz messages

parent 4ae9210a
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file itti_async_shell_cmd.hpp
\brief
\author Lionel Gauthier
\company Eurecom
\email: lionel.gauthier@eurecom.fr
*/
#ifndef FILE_ITTI_ASYNC_SHELL_CMD_SEEN
#define FILE_ITTI_ASYNC_SHELL_CMD_SEEN
#include "itti_msg.hpp"
namespace oai::cn::core::itti {
class itti_async_shell_cmd : public itti_msg {
public:
itti_async_shell_cmd(const task_id_t origin, const task_id_t destination, const std::string& system_cmd, bool is_abort_on_error, const char * src_file, const int src_line):
itti_msg( ASYNC_SHELL_CMD, origin, destination), system_command(system_cmd), is_abort_on_error(is_abort_on_error), src_file(src_file), src_line(src_line) {}
itti_async_shell_cmd(const itti_async_shell_cmd& i) :
itti_msg(i), system_command(i.system_command), is_abort_on_error(i.is_abort_on_error), src_file(i.src_file), src_line(i.src_line) {}
const char* get_msg_name() {return typeid( itti_msg_ping).name();};
std::string system_command;
bool is_abort_on_error;
// debug
std::string src_file;
int src_line;
} ;
}
#endif /* FILE_ITTI_ASYNC_SHELL_CMD_SEEN */
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* itti_msg_s11.hpp
*
* Created on: Oct 6, 2018
* Author: lionel.gauthier@eurecom.fr
*/
#ifndef ITTI_MSG_S11_HPP_INCLUDED_
#define ITTI_MSG_S11_HPP_INCLUDED_
#include "3gpp_29.274.hpp"
#include "itti_msg.hpp"
#include "msg_gtpv2c.hpp"
#include <boost/asio.hpp>
namespace oai::cn::core::itti {
class itti_s11_msg : public itti_msg {
public:
itti_s11_msg(const itti_msg_type_t msg_type, const task_id_t origin, const task_id_t destination):
itti_msg(msg_type, origin, destination) {
l_endpoint = {};
r_endpoint = {};
teid = UNASSIGNED_TEID;
gtpc_tx_id = 0;
}
itti_s11_msg(const itti_s11_msg& i) : itti_msg(i) {
l_endpoint = i.l_endpoint;
r_endpoint = i.r_endpoint;
teid = i.teid;
gtpc_tx_id = i.gtpc_tx_id;
}
itti_s11_msg(const itti_s11_msg& i, const task_id_t orig, const task_id_t dest) : itti_s11_msg(i) {
origin = orig;
destination = dest;
}
boost::asio::ip::udp::endpoint l_endpoint;
boost::asio::ip::udp::endpoint r_endpoint;
teid_t teid;
uint64_t gtpc_tx_id;
};
class itti_s11_create_session_request : public itti_s11_msg {
public:
itti_s11_create_session_request(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_CREATE_SESSION_REQUEST, origin, destination) { }
itti_s11_create_session_request(const itti_s11_create_session_request& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_create_session_request(const itti_s11_create_session_request& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_create_session_request).name();};
proto::gtpv2c::gtpv2c_create_session_request gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s11_create_session_response_t
* @brief Create Session Response
*
* The Create Session Response will be sent on S11 interface as
* part of these procedures:
* - E-UTRAN Initial Attach
* - UE requested PDN connectivity
* - Tracking Area Update procedure with SGW change
* - S1/X2-based handover with SGW change
*/
class itti_s11_create_session_response : public itti_s11_msg {
public:
itti_s11_create_session_response(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_CREATE_SESSION_RESPONSE, origin, destination) {
}
itti_s11_create_session_response(const itti_s11_create_session_response& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_create_session_response(const itti_s11_create_session_response& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_create_session_response).name();};
proto::gtpv2c::gtpv2c_create_session_response gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s11_create_bearer_request
* @brief Create Bearer Request
*
* The direction of this message shall be from PGW to SGW and from SGW to MME/S4-SGSN, and from PGW to ePDG
* The Create Bearer Request message shall be sent on the S5/S8 interface by the PGW to the SGW and on the S11
* interface by the SGW to the MME as part of the Dedicated Bearer Activation procedure.
* The message shall also be sent on the S5/S8 interface by the PGW to the SGW and on the S4 interface by the SGW to
* the SGSN as part of the Secondary PDP Context Activation procedure or the Network Requested Secondary PDP
* Context Activation procedure.
* The message shall also be sent on the S2b interface by the PGW to the ePDG as part of the Dedicated S2b bearer
* activation with GTP on S2b.
*/
class itti_s11_create_bearer_request : public itti_s11_msg {
public:
itti_s11_create_bearer_request(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_CREATE_BEARER_REQUEST, origin, destination) {
}
itti_s11_create_bearer_request(const itti_s11_create_bearer_request& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_create_bearer_request(const itti_s11_create_bearer_request& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_create_session_request).name();};
proto::gtpv2c::gtpv2c_create_bearer_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_create_bearer_response
* @brief Create Bearer Response
*
* The Create Bearer Response message shall be sent on the S5/S8 interface by the SGW to the PGW, and on the S11
* interface by the MME to the SGW as part of the Dedicated Bearer Activation procedure.
* The message shall also be sent on the S5/S8 interface by the SGW to the PGW and on the S4 interface by the SGSN to
* the SGW as part of Secondary PDP Context Activation procedure or the Network Requested Secondary PDP Context
* Activation procedure.
* The message shall also be sent on the S2b interface by the ePDG to the PGW as part of the Dedicated S2b bearer
* activation with GTP on S2b.
* Possible Cause values are specified in Table 8.4-1. Message specific cause values are:
* - "Request accepted".
* - "Request accepted partially".
* - "Context not found".
* - "Semantic error in the TFT operation".
* - "Syntactic error in the TFT operation".
* - "Semantic errors in packet filter(s)".
* - "Syntactic errors in packet filter(s)".
* - "Service not supported".
* - "Unable to page UE".
* - "UE not responding".
* - "Unable to page UE due to Suspension".
* - "UE refuses".
* - "Denied in RAT".
* - "UE context without TFT already activated".
*/
class itti_s11_create_bearer_response : public itti_s11_msg {
public:
itti_s11_create_bearer_response(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_CREATE_BEARER_RESPONSE, origin, destination) {
}
itti_s11_create_bearer_response(const itti_s11_create_bearer_response& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_create_bearer_response(const itti_s11_create_bearer_response& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_create_bearer_response).name();};
proto::gtpv2c::gtpv2c_create_bearer_response gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s11_modify_bearer_request
* @brief Modify Bearer Request
*
* The Modify Bearer Request will be sent on S11 interface as
* part of these procedures:
* - E-UTRAN Tracking Area Update without SGW Change
* - UE triggered Service Request
* - S1-based Handover
* - E-UTRAN Initial Attach
* - UE requested PDN connectivity
* - X2-based handover without SGWrelocation
*/
class itti_s11_modify_bearer_request : public itti_s11_msg {
public:
itti_s11_modify_bearer_request(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_MODIFY_BEARER_REQUEST, origin, destination) {
}
itti_s11_modify_bearer_request(const itti_s11_modify_bearer_request& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_modify_bearer_request(const itti_s11_modify_bearer_request& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_modify_bearer_request).name();};
proto::gtpv2c::gtpv2c_modify_bearer_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_modify_bearer_response
* @brief Modify Bearer Response
*
* The Modify Bearer Response will be sent on S11 interface as
* part of these procedures:
* - E-UTRAN Tracking Area Update without SGW Change
* - UE triggered Service Request
* - S1-based Handover
* - E-UTRAN Initial Attach
* - UE requested PDN connectivity
* - X2-based handover without SGWrelocation
*/
class itti_s11_modify_bearer_response : public itti_s11_msg {
public:
itti_s11_modify_bearer_response(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_MODIFY_BEARER_RESPONSE, origin, destination) {
}
itti_s11_modify_bearer_response(const itti_s11_modify_bearer_response& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_modify_bearer_response(const itti_s11_modify_bearer_response& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_modify_bearer_response).name();};
proto::gtpv2c::gtpv2c_modify_bearer_response gtp_ies;
} ;
//-----------------------------------------------------------------------------
class itti_s11_delete_session_request : public itti_s11_msg {
public:
itti_s11_delete_session_request(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_DELETE_SESSION_REQUEST, origin, destination) {
}
itti_s11_delete_session_request(const itti_s11_delete_session_request& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_delete_session_request(const itti_s11_delete_session_request& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_delete_session_request).name();};
proto::gtpv2c::gtpv2c_delete_session_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_delete_session_response
* @brief Delete Session Response
*
* The Delete Session Response will be sent on S11 interface as
* part of these procedures:
* - EUTRAN Initial Attach
* - UE, HSS or MME Initiated Detach
* - UE or MME Requested PDN Disconnection
* - Tracking Area Update with SGW Change
* - S1 Based Handover with SGW Change
* - X2 Based Handover with SGW Relocation
* - S1 Based handover cancel with SGW change
*/
class itti_s11_delete_session_response : public itti_s11_msg {
public:
itti_s11_delete_session_response(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_DELETE_SESSION_RESPONSE, origin, destination) {
}
itti_s11_delete_session_response(const itti_s11_delete_session_response& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_delete_session_response(const itti_s11_delete_session_response& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_delete_session_response).name();};
proto::gtpv2c::gtpv2c_delete_session_response gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_release_access_bearers_request
* @brief Release AccessBearers Request
*
* The Release Access Bearers Request message shall sent on the S11 interface by
* the MME to the SGW as part of the S1 release procedure.
* The message shall also be sent on the S4 interface by the SGSN to the SGW as
* part of the procedures:
* - RAB release using S4
* - Iu Release using S4
* - READY to STANDBY transition within the network
*/
class itti_s11_release_access_bearers_request : public itti_s11_msg {
public:
itti_s11_release_access_bearers_request(const task_id_t origin, const task_id_t destination): itti_s11_msg(S11_RELEASE_ACCESS_BEARERS_REQUEST, origin, destination) {
}
itti_s11_release_access_bearers_request(const itti_s11_release_access_bearers_request& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_release_access_bearers_request(const itti_s11_release_access_bearers_request& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_release_access_bearers_request).name();};
proto::gtpv2c::gtpv2c_release_access_bearers_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_release_access_bearers_response
* @brief Release AccessBearers Response
*
* The Release Access Bearers Response message is sent on the S11 interface by the SGW to the MME as part of the S1
* release procedure.
* The message shall also be sent on the S4 interface by the SGW to the SGSN as part of the procedures:
* - RAB release using S4
* - Iu Release using S4
* - READY to STANDBY transition within the network
* Possible Cause values are specified in Table 8.4-1. Message specific cause values are:
* - "Request accepted".
* - "Request accepted partially".
* - "Context not found
*/
class itti_s11_release_access_bearers_response : public itti_s11_msg {
public:
itti_s11_release_access_bearers_response(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_RELEASE_ACCESS_BEARERS_RESPONSE, origin, destination) {
}
itti_s11_release_access_bearers_response(const itti_s11_release_access_bearers_response& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_release_access_bearers_response(const itti_s11_release_access_bearers_response& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_release_access_bearers_response).name();};
proto::gtpv2c::gtpv2c_release_access_bearers_response gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s11_delete_bearer_command_t
* @brief Initiate Delete Bearer procedure
*
* A Delete Bearer Command message shall be sent on the S11 interface by the MME to the SGW and on the S5/S8
* interface by the SGW to the PGW as a part of the eNodeB requested bearer release or MME-Initiated Dedicated Bearer
* Deactivation procedure.
* The message shall also be sent on the S4 interface by the SGSN to the SGW and on the S5/S8 interface by the SGW to
* the PGW as part of the MS and SGSN Initiated Bearer Deactivation procedure using S4.
*/
class itti_s11_delete_bearer_command : public itti_s11_msg {
public:
itti_s11_delete_bearer_command(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_DELETE_BEARER_COMMAND, origin, destination) {
}
itti_s11_delete_bearer_command(const itti_s11_delete_bearer_command& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_delete_bearer_command(const itti_s11_delete_bearer_command& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_delete_bearer_command).name();};
proto::gtpv2c::gtpv2c_delete_bearer_command gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_downlink_data_notification
* @brief Downlink Data Notification
*
* The Downlink Data Notification message is sent on the S11 interface by the SGW to the MME as part of the S1 paging procedure.
*/
class itti_s11_downlink_data_notification : public itti_s11_msg {
public:
itti_s11_downlink_data_notification(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_DOWNLINK_DATA_NOTIFICATION, origin, destination) {
}
itti_s11_downlink_data_notification(const itti_s11_downlink_data_notification& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_downlink_data_notification(const itti_s11_downlink_data_notification& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_downlink_data_notification).name();};
proto::gtpv2c::gtpv2c_downlink_data_notification gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_downlink_data_notification_acknowledge
* @brief Downlink Data Notification Acknowledge
*
* The Downlink Data Notification Acknowledge message is sent on the S11 interface by the MME to the SGW as part of the S1 paging procedure.
*/
class itti_s11_downlink_data_notification_acknowledge : public itti_s11_msg {
public:
itti_s11_downlink_data_notification_acknowledge(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE, origin, destination) {
}
itti_s11_downlink_data_notification_acknowledge(const itti_s11_downlink_data_notification_acknowledge& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_downlink_data_notification_acknowledge(const itti_s11_downlink_data_notification_acknowledge& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_downlink_data_notification_acknowledge).name();};
proto::gtpv2c::gtpv2c_downlink_data_notification_acknowledge gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s11_downlink_data_notification_failure_indication
* @brief Downlink Data Notification Failure Indication
*
*/
class itti_s11_downlink_data_notification_failure_indication : public itti_s11_msg {
public:
itti_s11_downlink_data_notification_failure_indication(const task_id_t origin, const task_id_t destination):
itti_s11_msg(S11_DOWNLINK_DATA_NOTIFICATION_FAILURE_INDICATION, origin, destination) {
}
itti_s11_downlink_data_notification_failure_indication(const itti_s11_downlink_data_notification_failure_indication& i) : itti_s11_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s11_downlink_data_notification_failure_indication(const itti_s11_downlink_data_notification_failure_indication& i, const task_id_t orig, const task_id_t dest) :
itti_s11_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s11_downlink_data_notification_failure_indication).name();};
proto::gtpv2c::gtpv2c_downlink_data_notification_failure_indication gtp_ies;
} ;
} // namespace itti
#endif /* ITTI_MSG_S11_HPP_INCLUDED_ */
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* itti_msg_s1u.hpp
*
* Created on: Feb 05, 2019
* Author: lionel.gauthier@eurecom.fr
*/
#ifndef ITTI_MSG_S1U_HPP_INCLUDED_
#define ITTI_MSG_S1U_HPP_INCLUDED_
#include "itti_msg.hpp"
#include "3gpp_29.281.hpp"
#include "msg_gtpv1u.hpp"
#include <sys/socket.h>
namespace oai::cn::core::itti {
class itti_s1u_msg : public itti_msg {
public:
itti_s1u_msg(const itti_msg_type_t msg_type, const task_id_t orig, const task_id_t dest):
itti_msg(msg_type, orig, dest) {
l_endpoint = {};
l_endpoint_addr_len = sizeof(l_endpoint);
r_endpoint = {};
l_endpoint_addr_len = sizeof(r_endpoint);
teid = UNASSIGNED_TEID;
gtpu_tx_id = 0;
}
itti_s1u_msg(const itti_s1u_msg& i) : itti_msg(i) {
l_endpoint = i.l_endpoint;
l_endpoint_addr_len = i.l_endpoint_addr_len;
r_endpoint = i.r_endpoint;
r_endpoint_addr_len = i.r_endpoint_addr_len;
teid = i.teid;
gtpu_tx_id = i.gtpu_tx_id;
}
itti_s1u_msg(const itti_s1u_msg& i, const task_id_t orig, const task_id_t dest) : itti_s1u_msg(i) {
origin = orig;
destination = dest;
}
struct sockaddr_storage l_endpoint;
socklen_t l_endpoint_addr_len;
struct sockaddr_storage r_endpoint;
socklen_t r_endpoint_addr_len;
teid_t teid;
uint64_t gtpu_tx_id;
};
//------------------------------------------------------------------------------
class itti_s1u_echo_request : public itti_s1u_msg {
public:
itti_s1u_echo_request(const task_id_t orig, const task_id_t dest):
itti_s1u_msg(S1U_ECHO_REQUEST, orig, dest) {
}
itti_s1u_echo_request(const itti_s1u_echo_request& i) : itti_s1u_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s1u_echo_request(const itti_s1u_echo_request& i, const task_id_t orig, const task_id_t dest) :
itti_s1u_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s1u_echo_request).name();};
proto::gtpv1u::gtpv1u_echo_request gtp_ies;
};
//------------------------------------------------------------------------------
class itti_s1u_echo_response : public itti_s1u_msg {
public:
itti_s1u_echo_response(const task_id_t orig, const task_id_t dest):
itti_s1u_msg(S1U_ECHO_RESPONSE, orig, dest) {
}
itti_s1u_echo_response(const itti_s1u_echo_response& i) : itti_s1u_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s1u_echo_response(const itti_s1u_echo_response& i, const task_id_t orig, const task_id_t dest) :
itti_s1u_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s1u_echo_response).name();};
proto::gtpv1u::gtpv1u_echo_response gtp_ies;
};
//------------------------------------------------------------------------------
class itti_s1u_error_indication : public itti_s1u_msg {
public:
itti_s1u_error_indication(const task_id_t orig, const task_id_t dest):
itti_s1u_msg(S1U_ERROR_INDICATION, orig, dest) {
}
itti_s1u_error_indication(const itti_s1u_error_indication& i) : itti_s1u_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s1u_error_indication(const itti_s1u_error_indication& i, const task_id_t orig, const task_id_t dest) :
itti_s1u_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s1u_error_indication).name();};
proto::gtpv1u::gtpv1u_error_indication gtp_ies;
};
//------------------------------------------------------------------------------
class itti_s1u_supported_extension_headers_notification : public itti_s1u_msg {
public:
itti_s1u_supported_extension_headers_notification(const task_id_t orig, const task_id_t dest):
itti_s1u_msg(S1U_SUPPORTED_EXTENSION_HEADERS_NOTIFICATION, orig, dest) {
}
itti_s1u_supported_extension_headers_notification(const itti_s1u_supported_extension_headers_notification& i) : itti_s1u_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s1u_supported_extension_headers_notification(const itti_s1u_supported_extension_headers_notification& i, const task_id_t orig, const task_id_t dest) :
itti_s1u_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s1u_supported_extension_headers_notification).name();};
proto::gtpv1u::gtpv1u_supported_extension_headers_notification gtp_ies;
};
//------------------------------------------------------------------------------
class itti_s1u_end_marker : public itti_s1u_msg {
public:
itti_s1u_end_marker(const task_id_t orig, const task_id_t dest):
itti_s1u_msg(S1U_END_MARKER, orig, dest) {
}
itti_s1u_end_marker(const itti_s1u_end_marker& i) : itti_s1u_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s1u_end_marker(const itti_s1u_end_marker& i, const task_id_t orig, const task_id_t dest) :
itti_s1u_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s1u_end_marker).name();};
proto::gtpv1u::gtpv1u_end_marker gtp_ies;
};
} // namespace itti
#endif /* ITTI_MSG_S1U_HPP_INCLUDED_ */
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
* itti_msg_s5s8.hpp
*
* Created on: Oct 26, 2018
* Author: lionel.gauthier@eurecom.fr
*/
#ifndef ITTI_MSG_S5S8_HPP_INCLUDED_
#define ITTI_MSG_S5S8_HPP_INCLUDED_
#include "3gpp_29.274.hpp"
#include "itti_msg.hpp"
#include "msg_gtpv2c.hpp"
#include <boost/asio.hpp>
namespace oai::cn::core::itti {
class itti_s5s8_msg : public itti_msg {
public:
itti_s5s8_msg(const itti_msg_type_t msg_type, const task_id_t orig, const task_id_t dest):
itti_msg(msg_type, orig, dest) {
l_endpoint = {};
r_endpoint = {};
teid = UNASSIGNED_TEID;
gtpc_tx_id = 0;
}
itti_s5s8_msg(const itti_s5s8_msg& i) : itti_msg(i) {
l_endpoint = i.l_endpoint;
r_endpoint = i.r_endpoint;
teid = i.teid;
gtpc_tx_id = i.gtpc_tx_id;
}
itti_s5s8_msg(const itti_s5s8_msg& i, const task_id_t orig, const task_id_t dest) : itti_s5s8_msg(i) {
origin = orig;
destination = dest;
}
boost::asio::ip::udp::endpoint l_endpoint;
boost::asio::ip::udp::endpoint r_endpoint;
teid_t teid;
uint64_t gtpc_tx_id;
};
class itti_s5s8_create_session_request : public itti_s5s8_msg {
public:
itti_s5s8_create_session_request(const task_id_t orig, const task_id_t dest):
itti_s5s8_msg(S5S8_CREATE_SESSION_REQUEST, orig, dest) {
}
itti_s5s8_create_session_request(const itti_s5s8_create_session_request& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_create_session_request(const itti_s5s8_create_session_request& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_create_session_request).name();};
proto::gtpv2c::gtpv2c_create_session_request gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s5s8_create_session_response_t
* @brief Create Session Response
*
* The Create Session Response will be sent on S5S8 interface as
* part of these procedures:
* - E-UTRAN Initial Attach
* - UE requested PDN connectivity
* - Tracking Area Update procedure with SGW change
* - S1/X2-based handover with SGW change
*/
class itti_s5s8_create_session_response : public itti_s5s8_msg {
public:
itti_s5s8_create_session_response(const task_id_t orig, const task_id_t dest):
itti_s5s8_msg(S5S8_CREATE_SESSION_RESPONSE, orig, dest) {
}
itti_s5s8_create_session_response(const itti_s5s8_create_session_response& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_create_session_response(const itti_s5s8_create_session_response& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_create_session_response).name();};
proto::gtpv2c::gtpv2c_create_session_response gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s5s8_create_bearer_request
* @brief Create Bearer Request
*
* The direction of this message shall be from PGW to SGW and from SGW to MME/S4-SGSN, and from PGW to ePDG
* The Create Bearer Request message shall be sent on the S5/S8 interface by the PGW to the SGW and on the S5S8
* interface by the SGW to the MME as part of the Dedicated Bearer Activation procedure.
* The message shall also be sent on the S5/S8 interface by the PGW to the SGW and on the S4 interface by the SGW to
* the SGSN as part of the Secondary PDP Context Activation procedure or the Network Requested Secondary PDP
* Context Activation procedure.
* The message shall also be sent on the S2b interface by the PGW to the ePDG as part of the Dedicated S2b bearer
* activation with GTP on S2b.
*/
class itti_s5s8_create_bearer_request : public itti_s5s8_msg {
public:
itti_s5s8_create_bearer_request(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_CREATE_BEARER_REQUEST, orig, dest) {
}
itti_s5s8_create_bearer_request(const itti_s5s8_create_bearer_request& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_create_bearer_request(const itti_s5s8_create_bearer_request& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_create_session_request).name();};
proto::gtpv2c::gtpv2c_create_bearer_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s5s8_create_bearer_response
* @brief Create Bearer Response
*
* The Create Bearer Response message shall be sent on the S5/S8 interface by the SGW to the PGW, and on the S5S8
* interface by the MME to the SGW as part of the Dedicated Bearer Activation procedure.
* The message shall also be sent on the S5/S8 interface by the SGW to the PGW and on the S4 interface by the SGSN to
* the SGW as part of Secondary PDP Context Activation procedure or the Network Requested Secondary PDP Context
* Activation procedure.
* The message shall also be sent on the S2b interface by the ePDG to the PGW as part of the Dedicated S2b bearer
* activation with GTP on S2b.
* Possible Cause values are specified in Table 8.4-1. Message specific cause values are:
* - "Request accepted".
* - "Request accepted partially".
* - "Context not found".
* - "Semantic error in the TFT operation".
* - "Syntactic error in the TFT operation".
* - "Semantic errors in packet filter(s)".
* - "Syntactic errors in packet filter(s)".
* - "Service not supported".
* - "Unable to page UE".
* - "UE not responding".
* - "Unable to page UE due to Suspension".
* - "UE refuses".
* - "Denied in RAT".
* - "UE context without TFT already activated".
*/
class itti_s5s8_create_bearer_response : public itti_s5s8_msg {
public:
itti_s5s8_create_bearer_response(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_CREATE_BEARER_RESPONSE, orig, dest) {
}
itti_s5s8_create_bearer_response(const itti_s5s8_create_bearer_response& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_create_bearer_response(const itti_s5s8_create_bearer_response& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_create_bearer_response).name();};
proto::gtpv2c::gtpv2c_create_bearer_response gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s5s8_modify_bearer_request
* @brief Modify Bearer Request
*
* The Modify Bearer Request will be sent on S5S8 interface as
* part of these procedures:
* - E-UTRAN Tracking Area Update without SGW Change
* - UE triggered Service Request
* - S1-based Handover
* - E-UTRAN Initial Attach
* - UE requested PDN connectivity
* - X2-based handover without SGWrelocation
*/
class itti_s5s8_modify_bearer_request : public itti_s5s8_msg {
public:
itti_s5s8_modify_bearer_request(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_MODIFY_BEARER_REQUEST, orig, dest) {
}
itti_s5s8_modify_bearer_request(const itti_s5s8_modify_bearer_request& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_modify_bearer_request(const itti_s5s8_modify_bearer_request& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_modify_bearer_request).name();};
proto::gtpv2c::gtpv2c_modify_bearer_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s5s8_modify_bearer_response
* @brief Modify Bearer Response
*
* The Modify Bearer Response will be sent on S5S8 interface as
* part of these procedures:
* - E-UTRAN Tracking Area Update without SGW Change
* - UE triggered Service Request
* - S1-based Handover
* - E-UTRAN Initial Attach
* - UE requested PDN connectivity
* - X2-based handover without SGWrelocation
*/
class itti_s5s8_modify_bearer_response : public itti_s5s8_msg {
public:
itti_s5s8_modify_bearer_response(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_MODIFY_BEARER_RESPONSE, orig, dest) {
}
itti_s5s8_modify_bearer_response(const itti_s5s8_modify_bearer_response& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_modify_bearer_response(const itti_s5s8_modify_bearer_response& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_modify_bearer_response).name();};
proto::gtpv2c::gtpv2c_modify_bearer_response gtp_ies;
} ;
//-----------------------------------------------------------------------------
class itti_s5s8_delete_session_request : public itti_s5s8_msg {
public:
itti_s5s8_delete_session_request(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_DELETE_SESSION_REQUEST, orig, dest) {
noDelete = false;
}
itti_s5s8_delete_session_request(const itti_s5s8_delete_session_request& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
noDelete = i.noDelete;
}
itti_s5s8_delete_session_request(const itti_s5s8_delete_session_request& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
noDelete = i.noDelete;
}
const char* get_msg_name() {return typeid(itti_s5s8_delete_session_request).name();};
proto::gtpv2c::gtpv2c_delete_session_request gtp_ies;
bool noDelete;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s5s8_delete_session_response
* @brief Delete Session Response
*
* The Delete Session Response will be sent on S5S8 interface as
* part of these procedures:
* - EUTRAN Initial Attach
* - UE, HSS or MME Initiated Detach
* - UE or MME Requested PDN Disconnection
* - Tracking Area Update with SGW Change
* - S1 Based Handover with SGW Change
* - X2 Based Handover with SGW Relocation
* - S1 Based handover cancel with SGW change
*/
class itti_s5s8_delete_session_response : public itti_s5s8_msg {
public:
itti_s5s8_delete_session_response(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_DELETE_SESSION_RESPONSE, orig, dest) {
}
itti_s5s8_delete_session_response(const itti_s5s8_delete_session_response& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_delete_session_response(const itti_s5s8_delete_session_response& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_delete_session_response).name();};
proto::gtpv2c::gtpv2c_delete_session_response gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s5s8_release_access_bearers_request
* @brief Release AccessBearers Request
*
* The Release Access Bearers Request message shall sent on the S5S8 interface by
* the MME to the SGW as part of the S1 release procedure.
* The message shall also be sent on the S4 interface by the SGSN to the SGW as
* part of the procedures:
* - RAB release using S4
* - Iu Release using S4
* - READY to STANDBY transition within the network
*/
class itti_s5s8_release_access_bearers_request : public itti_s5s8_msg {
public:
itti_s5s8_release_access_bearers_request(const task_id_t orig, const task_id_t dest): itti_s5s8_msg(S5S8_RELEASE_ACCESS_BEARERS_REQUEST, orig, dest) {
}
itti_s5s8_release_access_bearers_request(const itti_s5s8_release_access_bearers_request& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_release_access_bearers_request(const itti_s5s8_release_access_bearers_request& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_release_access_bearers_request).name();};
proto::gtpv2c::gtpv2c_release_access_bearers_request gtp_ies;
} ;
//-----------------------------------------------------------------------------
/** @class itti_s5s8_release_access_bearers_response
* @brief Release AccessBearers Response
*
* The Release Access Bearers Response message is sent on the S5S8 interface by the SGW to the MME as part of the S1
* release procedure.
* The message shall also be sent on the S4 interface by the SGW to the SGSN as part of the procedures:
* - RAB release using S4
* - Iu Release using S4
* - READY to STANDBY transition within the network
* Possible Cause values are specified in Table 8.4-1. Message specific cause values are:
* - "Request accepted".
* - "Request accepted partially".
* - "Context not found
*/
class itti_s5s8_release_access_bearers_response : public itti_s5s8_msg {
public:
itti_s5s8_release_access_bearers_response(const task_id_t orig, const task_id_t dest):
itti_s5s8_msg(S5S8_RELEASE_ACCESS_BEARERS_RESPONSE, orig, dest) {
}
itti_s5s8_release_access_bearers_response(const itti_s5s8_release_access_bearers_response& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_release_access_bearers_response(const itti_s5s8_release_access_bearers_response& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_release_access_bearers_response).name();};
proto::gtpv2c::gtpv2c_release_access_bearers_response gtp_ies;
};
//-----------------------------------------------------------------------------
/** @class itti_s5s8_delete_bearer_command_t
* @brief Initiate Delete Bearer procedure
*
* A Delete Bearer Command message shall be sent on the S5S8 interface by the MME to the SGW and on the S5/S8
* interface by the SGW to the PGW as a part of the eNodeB requested bearer release or MME-Initiated Dedicated Bearer
* Deactivation procedure.
* The message shall also be sent on the S4 interface by the SGSN to the SGW and on the S5/S8 interface by the SGW to
* the PGW as part of the MS and SGSN Initiated Bearer Deactivation procedure using S4.
*/
class itti_s5s8_delete_bearer_command : public itti_s5s8_msg {
public:
itti_s5s8_delete_bearer_command(const task_id_t orig, const task_id_t dest):
itti_s5s8_msg(S5S8_DELETE_BEARER_COMMAND, orig, dest) {
}
itti_s5s8_delete_bearer_command(const itti_s5s8_delete_bearer_command& i) : itti_s5s8_msg(i) {
gtp_ies = i.gtp_ies;
}
itti_s5s8_delete_bearer_command(const itti_s5s8_delete_bearer_command& i, const task_id_t orig, const task_id_t dest) :
itti_s5s8_msg(i, orig, dest) {
gtp_ies = i.gtp_ies;
}
const char* get_msg_name() {return typeid(itti_s5s8_delete_bearer_command).name();};
proto::gtpv2c::gtpv2c_delete_bearer_command gtp_ies;
} ;
} // namespace itti
#endif /* ITTI_MSG_S5S8_HPP_INCLUDED_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment