Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-AMF
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG-AMF
Commits
58c0816c
Commit
58c0816c
authored
Feb 18, 2021
by
Tien-Thinh Nguyen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Address waring when building AMF in RHEL 8.2
parent
5b684075
Changes
40
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
162 additions
and
125 deletions
+162
-125
src/amf-app/amf_n1.cpp
src/amf-app/amf_n1.cpp
+4
-2
src/amf-app/amf_profile.hpp
src/amf-app/amf_profile.hpp
+2
-0
src/common/3gpp_29.510.h
src/common/3gpp_29.510.h
+2
-0
src/nas/ies/5GSMobilityIdentity.cpp
src/nas/ies/5GSMobilityIdentity.cpp
+2
-2
src/nas/ies/Authentication_Failure_Parameter.cpp
src/nas/ies/Authentication_Failure_Parameter.cpp
+6
-6
src/nas/ies/Authentication_Response_Parameter.cpp
src/nas/ies/Authentication_Response_Parameter.cpp
+1
-1
src/nas/ies/DNN.cpp
src/nas/ies/DNN.cpp
+1
-7
src/nas/ies/EAP_Message.cpp
src/nas/ies/EAP_Message.cpp
+4
-4
src/nas/ies/EPS_NAS_Message_Container.cpp
src/nas/ies/EPS_NAS_Message_Container.cpp
+7
-7
src/nas/ies/IMEISV_Request.cpp
src/nas/ies/IMEISV_Request.cpp
+6
-5
src/nas/ies/LADN_Indication.cpp
src/nas/ies/LADN_Indication.cpp
+8
-8
src/nas/ies/MICO_Indication.cpp
src/nas/ies/MICO_Indication.cpp
+7
-6
src/nas/ies/NAS_Message_Container.cpp
src/nas/ies/NAS_Message_Container.cpp
+3
-3
src/nas/ies/NSSAI.cpp
src/nas/ies/NSSAI.cpp
+1
-1
src/nas/ies/NSSAI.hpp
src/nas/ies/NSSAI.hpp
+1
-1
src/nas/ies/NSSAI_Inclusion_Mode.cpp
src/nas/ies/NSSAI_Inclusion_Mode.cpp
+7
-6
src/nas/ies/Network_Slicing_Indication.cpp
src/nas/ies/Network_Slicing_Indication.cpp
+6
-5
src/nas/ies/Non_3GPP_NW_Provided_Policies.cpp
src/nas/ies/Non_3GPP_NW_Provided_Policies.cpp
+7
-6
src/nas/ies/Payload_Container.cpp
src/nas/ies/Payload_Container.cpp
+5
-5
src/nas/ies/ServiceType.cpp
src/nas/ies/ServiceType.cpp
+1
-0
src/nas/ies/_5GSDeregistrationType.cpp
src/nas/ies/_5GSDeregistrationType.cpp
+2
-1
src/nas/ies/_5GSTrackingAreaIdList.cpp
src/nas/ies/_5GSTrackingAreaIdList.cpp
+6
-2
src/nas/msgs/AuthenticationFailure.cpp
src/nas/msgs/AuthenticationFailure.cpp
+1
-0
src/nas/msgs/AuthenticationReject.cpp
src/nas/msgs/AuthenticationReject.cpp
+1
-0
src/nas/msgs/AuthenticationRequest.cpp
src/nas/msgs/AuthenticationRequest.cpp
+1
-0
src/nas/msgs/AuthenticationResponse.cpp
src/nas/msgs/AuthenticationResponse.cpp
+1
-0
src/nas/msgs/AuthenticationResult.cpp
src/nas/msgs/AuthenticationResult.cpp
+1
-0
src/nas/msgs/DeregistrationAccept.cpp
src/nas/msgs/DeregistrationAccept.cpp
+1
-0
src/nas/msgs/IdentityRequest.cpp
src/nas/msgs/IdentityRequest.cpp
+1
-0
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+1
-0
src/nas/msgs/RegistrationComplete.cpp
src/nas/msgs/RegistrationComplete.cpp
+1
-0
src/nas/msgs/RegistrationRequest.cpp
src/nas/msgs/RegistrationRequest.cpp
+6
-2
src/nas/msgs/SecurityModeCommand.cpp
src/nas/msgs/SecurityModeCommand.cpp
+1
-0
src/nas/msgs/SecurityModeComplete.cpp
src/nas/msgs/SecurityModeComplete.cpp
+1
-0
src/nas/msgs/SecurityModeReject.cpp
src/nas/msgs/SecurityModeReject.cpp
+1
-0
src/nas/msgs/ServiceRequest.cpp
src/nas/msgs/ServiceRequest.cpp
+1
-0
src/nas/msgs/ULNASTransport.cpp
src/nas/msgs/ULNASTransport.cpp
+1
-0
src/ngap/ngapMsgs/InitialContextSetupRequest.cpp
src/ngap/ngapMsgs/InitialContextSetupRequest.cpp
+1
-0
src/ngap/ngapMsgs/UEContextReleaseCommand.cpp
src/ngap/ngapMsgs/UEContextReleaseCommand.cpp
+1
-0
src/ngap/ngap_app/ngap_message_callback.hpp
src/ngap/ngap_app/ngap_message_callback.hpp
+51
-45
No files found.
src/amf-app/amf_n1.cpp
View file @
58c0816c
...
...
@@ -943,7 +943,7 @@ void amf_n1::registration_request_handle(
//------------------------------------------------------------------------------
// authentication vector handlers
bool
amf_n1
::
generate_authentication_vector
()
{}
bool
amf_n1
::
generate_authentication_vector
()
{
return
true
;
}
// context management functions
//------------------------------------------------------------------------------
...
...
@@ -1307,6 +1307,7 @@ bool amf_n1::authentication_vectors_generator_in_udm(
Logger
::
amf_n1
().
error
(
"Failed to fetch user data from MySQL"
);
return
false
;
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
@@ -2043,6 +2044,7 @@ bool amf_n1::nas_message_integrity_protected(
}
break
;
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
@@ -2086,8 +2088,8 @@ bool amf_n1::nas_message_cipher_protected(
nas_algorithms
::
nas_stream_encrypt_nea2
(
&
stream_cipher
,
(
uint8_t
*
)
bdata
(
output_nas
));
}
break
;
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
src/amf-app/amf_profile.hpp
View file @
58c0816c
...
...
@@ -81,6 +81,7 @@ class nf_profile : public std::enable_shared_from_this<nf_profile> {
nf_type
=
s
.
nf_type
;
nf_instance_name
=
s
.
nf_instance_name
;
nf_status
=
s
.
nf_status
;
return
*
this
;
}
// nf_profile(nf_profile &b) = delete;
...
...
@@ -318,6 +319,7 @@ class amf_profile : public nf_profile {
custom_info
=
s
.
custom_info
;
amf_info
=
s
.
amf_info
;
nf_services
=
s
.
nf_services
;
return
*
this
;
}
// amf_profile(amf_profile &b) = delete;
...
...
src/common/3gpp_29.510.h
View file @
58c0816c
...
...
@@ -192,6 +192,7 @@ typedef struct subscription_condition_s {
}
}
// TODO:
return
*
this
;
}
virtual
~
subscription_condition_s
(){};
...
...
@@ -258,6 +259,7 @@ typedef struct nf_service_version_s {
nf_service_version_s
&
operator
=
(
const
nf_service_version_s
&
s
)
{
api_version_in_uri
=
s
.
api_version_in_uri
;
api_full_version
=
s
.
api_full_version
;
return
*
this
;
}
std
::
string
to_string
()
const
{
...
...
src/nas/ies/5GSMobilityIdentity.cpp
View file @
58c0816c
...
...
@@ -428,7 +428,7 @@ int _5GSMobilityIdentity::encodeRoutid2buffer(string routidstr, uint8_t* buf) {
}
//------------------------------------------------------------------------------
int
_5GSMobilityIdentity
::
encodeMSIN2buffer
(
string
msinstr
,
uint8_t
*
buf
)
{}
int
_5GSMobilityIdentity
::
encodeMSIN2buffer
(
string
msinstr
,
uint8_t
*
buf
)
{
return
1
;
}
//------------------------------------------------------------------------------
int
_5GSMobilityIdentity
::
imeisv_encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
...
...
@@ -676,7 +676,7 @@ int _5GSMobilityIdentity::imeisv_decodefrombuffer(uint8_t* buf, int len) {
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
Logger
::
nas_mm
().
debug
(
"decoded 5GSMobilityIdentity IMEISV value(0x%x)"
,
(
uint8_t
*
)
_IMEISV
.
identity
->
data
[
i
]);
(
uint8_t
)
_IMEISV
.
identity
->
data
[
i
]);
}
Logger
::
nas_mm
().
debug
(
"decoded 5GSMobilityIdentity IMEISV len(%d)"
,
decoded_size
);
...
...
src/nas/ies/Authentication_Failure_Parameter.cpp
View file @
58c0816c
...
...
@@ -77,7 +77,7 @@ int Authentication_Failure_Parameter::encode2buffer(uint8_t* buf, int len) {
// *(buf + encoded_size) = _value; encoded_size++; encoded_size++;
}
Logger
::
nas_mm
().
debug
(
"
encoded Authentication_Failure_Parameter len
(%d)"
,
encoded_size
);
"
Encoded Authentication_Failure_Parameter len
(%d)"
,
encoded_size
);
return
encoded_size
;
}
...
...
@@ -85,7 +85,7 @@ int Authentication_Failure_Parameter::encode2buffer(uint8_t* buf, int len) {
int
Authentication_Failure_Parameter
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"
decoding Authentication_Failure_Parameter iei
(0x%x)"
,
*
buf
);
"
Decoding Authentication_Failure_Parameter iei
(0x%x)"
,
*
buf
);
int
decoded_size
=
0
;
if
(
is_option
)
{
decoded_size
++
;
...
...
@@ -93,15 +93,15 @@ int Authentication_Failure_Parameter::decodefrombuffer(
length
=
*
(
buf
+
decoded_size
);
decoded_size
++
;
Logger
::
nas_mm
().
debug
(
"
decoded IE Authentication_Failure_Parameter length
(%d)"
,
length
);
"
Decoded IE Authentication_Failure_Parameter length
(%d)"
,
length
);
decode_bstring
(
&
value
,
length
,
(
buf
+
decoded_size
),
len
-
decoded_size
);
decoded_size
+=
length
;
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
Logger
::
nas_mm
().
debug
(
"
decoded Authentication_Failure_Parameter value
(0x%x)"
,
(
uint8_t
*
)
value
->
data
[
i
]);
"
Decoded Authentication_Failure_Parameter value
(0x%x)"
,
(
uint8_t
)
value
->
data
[
i
]);
}
Logger
::
nas_mm
().
debug
(
"
decoded Authentication_Failure_Parameter len
(%d)"
,
decoded_size
);
"
Decoded Authentication_Failure_Parameter len
(%d)"
,
decoded_size
);
return
decoded_size
;
}
src/nas/ies/Authentication_Response_Parameter.cpp
View file @
58c0816c
...
...
@@ -96,7 +96,7 @@ int Authentication_Response_Parameter::decodefrombuffer(
decoded_size
+=
length
;
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
Logger
::
nas_mm
().
debug
(
"Decoded NAS_Message_Container value 0x%x"
,
(
uint8_t
*
)
PARA
->
data
[
i
]);
"Decoded NAS_Message_Container value 0x%x"
,
(
uint8_t
)
PARA
->
data
[
i
]);
}
Logger
::
nas_mm
().
debug
(
"Decoded Authentication_Response_Parameter (len %d)"
,
decoded_size
);
...
...
src/nas/ies/DNN.cpp
View file @
58c0816c
...
...
@@ -48,12 +48,6 @@ DNN::DNN() {}
//------------------------------------------------------------------------------
DNN
::~
DNN
()
{}
//------------------------------------------------------------------------------
/*void DNN::setValue(uint8_t iei, uint8_t value) {
_iei = iei;
_value = value;
}*/
//------------------------------------------------------------------------------
void
DNN
::
getValue
(
bstring
&
dnn
)
{
// dnn = _DNN;
...
...
@@ -100,7 +94,7 @@ int DNN::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
decoded_size
+=
length
;
for
(
int
i
=
0
;
i
<
blength
(
_DNN
);
i
++
)
{
Logger
::
nas_mm
().
debug
(
"Decoded DNN value: 0x%x"
,
(
uint8_t
*
)
bdata
(
_DNN
)[
i
]);
"Decoded DNN value: 0x%x"
,
(
uint8_t
)
bdata
(
_DNN
)[
i
]);
}
Logger
::
nas_mm
().
debug
(
"Decoded DNN len: %d"
,
decoded_size
);
return
decoded_size
;
...
...
src/nas/ies/EAP_Message.cpp
View file @
58c0816c
...
...
@@ -70,13 +70,13 @@ int EAP_Message::encode2buffer(uint8_t* buf, int len) {
int
size
=
encode_bstring
(
EAP
,
(
buf
+
encoded_size
),
len
-
encoded_size
);
encoded_size
+=
size
;
Logger
::
nas_mm
().
debug
(
"encoded EAP_Message len(%d)"
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"encoded EAP_Message len
(%d)"
,
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
EAP_Message
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"decoding EAP_Message iei(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
debug
(
"decoding EAP_Message iei
(0x%x)"
,
*
buf
);
int
decoded_size
=
0
;
if
(
is_option
)
{
decoded_size
++
;
...
...
@@ -90,8 +90,8 @@ int EAP_Message::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
decoded_size
+=
length
;
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
Logger
::
nas_mm
().
debug
(
"decoded EAP_Message value
(0x%x)"
,
(
uint8_t
*
)
EAP
->
data
[
i
]);
"decoded EAP_Message value
(0x%x)"
,
(
uint8_t
)
EAP
->
data
[
i
]);
}
Logger
::
nas_mm
().
debug
(
"decoded EAP_Message len(%d)"
,
decoded_size
);
Logger
::
nas_mm
().
debug
(
"decoded EAP_Message len
(%d)"
,
decoded_size
);
return
decoded_size
;
}
src/nas/ies/EPS_NAS_Message_Container.cpp
View file @
58c0816c
...
...
@@ -61,9 +61,9 @@ void EPS_NAS_Message_Container::getValue(bstring& value) {
//------------------------------------------------------------------------------
int
EPS_NAS_Message_Container
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
encoding EPS_NAS_Message_Container iei
(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
Encoding EPS_NAS_Message_Container iei
(0x%x)"
,
_iei
);
if
(
len
<
length
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than %d"
,
length
);
Logger
::
nas_mm
().
error
(
"
L
en is less than %d"
,
length
);
return
0
;
}
int
encoded_size
=
0
;
...
...
@@ -82,14 +82,14 @@ int EPS_NAS_Message_Container::encode2buffer(uint8_t* buf, int len) {
// *(buf + encoded_size) = _value; encoded_size++; encoded_size++;
}
Logger
::
nas_mm
().
debug
(
"
encoded EPS_NAS_Message_Container len
(%d)"
,
encoded_size
);
"
Encoded EPS_NAS_Message_Container len
(%d)"
,
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
EPS_NAS_Message_Container
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"
decoding EPS_NAS_Message_Container iei
(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
debug
(
"
Decoding EPS_NAS_Message_Container iei
(0x%x)"
,
*
buf
);
int
decoded_size
=
0
;
if
(
is_option
)
{
decoded_size
++
;
...
...
@@ -103,10 +103,10 @@ int EPS_NAS_Message_Container::decodefrombuffer(
decoded_size
+=
length
;
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
Logger
::
nas_mm
().
debug
(
"
decoded EPS_NAS_Message_Container value
(0x%x)"
,
(
uint8_t
*
)
_value
->
data
[
i
]);
"
Decoded EPS_NAS_Message_Container value
(0x%x)"
,
(
uint8_t
)
_value
->
data
[
i
]);
}
Logger
::
nas_mm
().
debug
(
"
decoded EPS_NAS_Message_Container len
(%d)"
,
decoded_size
);
"
Decoded EPS_NAS_Message_Container len
(%d)"
,
decoded_size
);
return
decoded_size
;
}
src/nas/ies/IMEISV_Request.cpp
View file @
58c0816c
...
...
@@ -59,9 +59,9 @@ uint8_t IMEISV_Request::getValue() {
//------------------------------------------------------------------------------
int
IMEISV_Request
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
encoding IMEISV_Request iei
(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
Encoding IMEISV_Request iei
(0x%x)"
,
_iei
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than 1"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than 1"
);
return
0
;
}
uint8_t
octet
=
0
;
...
...
@@ -73,15 +73,16 @@ int IMEISV_Request::encode2buffer(uint8_t* buf, int len) {
}
else
{
octet
=
(
_iei
<<
4
)
|
(
_value
&
0x07
);
*
buf
=
octet
;
Logger
::
nas_mm
().
debug
(
"
encoded IMEISV_Request IE(len(1 octet)
)"
);
Logger
::
nas_mm
().
debug
(
"
Encoded IMEISV_Request IE (len - 1 octet
)"
);
return
1
;
}
return
1
;
}
//------------------------------------------------------------------------------
int
IMEISV_Request
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
0
;
}
else
{
uint8_t
octet
=
(
*
buf
);
...
...
@@ -91,7 +92,7 @@ int IMEISV_Request::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
_iei
=
0
;
}
_value
=
octet
&
0x07
;
Logger
::
nas_mm
().
debug
(
"
decoded IMEISV_Request value
(0x%x)"
,
_value
);
Logger
::
nas_mm
().
debug
(
"
Decoded IMEISV_Request value
(0x%x)"
,
_value
);
return
1
;
}
}
src/nas/ies/LADN_Indication.cpp
View file @
58c0816c
...
...
@@ -65,9 +65,9 @@ bool LADN_Indication::getValue(std::vector<bstring>& ladn) {
//------------------------------------------------------------------------------
int
LADN_Indication
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
encoding LADN_Indication iei
(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
Encoding LADN_Indication iei
(0x%x)"
,
_iei
);
if
(
len
<
length
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than %d"
,
length
);
Logger
::
nas_mm
().
error
(
"
L
en is less than %d"
,
length
);
return
0
;
}
int
encoded_size
=
0
;
...
...
@@ -88,13 +88,13 @@ int LADN_Indication::encode2buffer(uint8_t* buf, int len) {
// *(buf + encoded_size) = length - 1; encoded_size++;
// *(buf + encoded_size) = _value; encoded_size++; encoded_size++;
}
Logger
::
nas_mm
().
debug
(
"
encoded LADN_Indication len
(%d)"
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"
Encoded LADN_Indication len
(%d)"
,
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
LADN_Indication
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"
decoding LADN_Indication iei
(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
debug
(
"
Decoding LADN_Indication iei
(0x%x)"
,
*
buf
);
int
decoded_size
=
0
;
if
(
is_option
)
{
decoded_size
++
;
...
...
@@ -104,7 +104,7 @@ int LADN_Indication::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
decoded_size
++
;
length
|=
(
*
(
buf
+
decoded_size
))
<<
8
;
decoded_size
++
;
Logger
::
nas_mm
().
debug
(
"
decoded LADN_Indication len
(%d)"
,
length
);
Logger
::
nas_mm
().
debug
(
"
Decoded LADN_Indication len
(%d)"
,
length
);
int
LEAGTH
=
length
;
uint8_t
len_dnn
;
bstring
dnn
;
...
...
@@ -120,10 +120,10 @@ int LADN_Indication::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
for
(
int
i
=
0
;
i
<
LADN
.
size
();
i
++
)
{
for
(
int
j
=
0
;
j
<
blength
(
LADN
.
at
(
i
));
j
++
)
{
Logger
::
nas_mm
().
debug
(
"
decoded LADN_Indication value
(0x%x)"
,
(
uint8_t
*
)
LADN
.
at
(
i
)
->
data
[
j
]);
"
Decoded LADN_Indication value
(0x%x)"
,
(
uint8_t
)
LADN
.
at
(
i
)
->
data
[
j
]);
}
}
Logger
::
nas_mm
().
debug
(
"
decoded LADN_Indication len
(%d)"
,
decoded_size
);
Logger
::
nas_mm
().
debug
(
"
Decoded LADN_Indication len
(%d)"
,
decoded_size
);
return
decoded_size
;
}
src/nas/ies/MICO_Indication.cpp
View file @
58c0816c
...
...
@@ -52,9 +52,9 @@ MICO_Indication::~MICO_Indication(){};
//------------------------------------------------------------------------------
int
MICO_Indication
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
encoding MICO_Indication IE iei
(0x%x)"
,
iei
);
Logger
::
nas_mm
().
debug
(
"
Encoding MICO_Indication IE iei
(0x%x)"
,
iei
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
-
1
;
}
else
{
uint8_t
octet
=
0
;
...
...
@@ -66,17 +66,18 @@ int MICO_Indication::encode2buffer(uint8_t* buf, int len) {
}
else
{
octet
=
(
iei
<<
4
)
|
(
SPRTI
<<
1
)
|
RAAI
;
*
buf
=
octet
;
Logger
::
nas_mm
().
debug
(
"
encoded MICO_Indication IE(len(1 octet)
)"
);
Logger
::
nas_mm
().
debug
(
"
Encoded MICO_Indication IE (len: 1 octet
)"
);
return
1
;
}
}
return
1
;
}
//------------------------------------------------------------------------------
int
MICO_Indication
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"
d
ecoding MICO_Indication IE"
);
Logger
::
nas_mm
().
debug
(
"
D
ecoding MICO_Indication IE"
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
0
;
}
else
{
uint8_t
octet
=
(
*
buf
);
...
...
@@ -88,7 +89,7 @@ int MICO_Indication::decodefrombuffer(uint8_t* buf, int len, bool is_option) {
SPRTI
=
octet
&
0x02
;
RAAI
=
octet
&
0x01
;
Logger
::
nas_mm
().
debug
(
"decoded MICO_Indication iei
(0x%x) sprti(0x%x) raai
(0x%x)"
,
iei
,
SPRTI
,
"decoded MICO_Indication iei
(0x%x) sprti (0x%x) raai
(0x%x)"
,
iei
,
SPRTI
,
RAAI
);
return
1
;
}
...
...
src/nas/ies/NAS_Message_Container.cpp
View file @
58c0816c
...
...
@@ -63,7 +63,7 @@ void NAS_Message_Container::getValue(bstring& value) {
int
NAS_Message_Container
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding NAS_Message_Container IEI 0x%x"
,
_iei
);
if
(
len
<
length
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than %d"
,
length
);
Logger
::
nas_mm
().
error
(
"
L
en is less than %d"
,
length
);
return
0
;
}
int
encoded_size
=
0
;
...
...
@@ -89,7 +89,7 @@ int NAS_Message_Container::encode2buffer(uint8_t* buf, int len) {
//------------------------------------------------------------------------------
int
NAS_Message_Container
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"Decoding NAS_Message_Container iei(0x%x)"
,
*
buf
);
Logger
::
nas_mm
().
debug
(
"Decoding NAS_Message_Container iei
(0x%x)"
,
*
buf
);
int
decoded_size
=
0
;
if
(
is_option
)
{
decoded_size
++
;
...
...
@@ -103,7 +103,7 @@ int NAS_Message_Container::decodefrombuffer(
decoded_size
+=
length
;
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
Logger
::
nas_mm
().
debug
(
"Decoded NAS_Message_Container value 0x%x"
,
(
uint8_t
*
)
_value
->
data
[
i
]);
"Decoded NAS_Message_Container value 0x%x"
,
(
uint8_t
)
_value
->
data
[
i
]);
}
Logger
::
nas_mm
().
debug
(
"Decoded NAS_Message_Container (len %d)"
,
decoded_size
);
...
...
src/nas/ies/NSSAI.cpp
View file @
58c0816c
...
...
@@ -60,7 +60,7 @@ NSSAI::~NSSAI() {}
void
NSSAI
::
setS_NAASI
(
uint8_t
SST
)
{}
//------------------------------------------------------------------------------
bool
NSSAI
::
getValue
(
std
::
vector
<
struct
SNSSAI_s
>&
nssai
)
{
void
NSSAI
::
getValue
(
std
::
vector
<
struct
SNSSAI_s
>&
nssai
)
{
nssai
.
assign
(
S_NSSAI
.
begin
(),
S_NSSAI
.
end
());
}
...
...
src/nas/ies/NSSAI.hpp
View file @
58c0816c
...
...
@@ -42,7 +42,7 @@ class NSSAI {
void
setS_NAASI
(
uint8_t
SST
);
int
encode2buffer
(
uint8_t
*
buf
,
int
len
);
int
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
bool
getValue
(
std
::
vector
<
struct
SNSSAI_s
>&
nssai
);
void
getValue
(
std
::
vector
<
struct
SNSSAI_s
>&
nssai
);
private:
uint8_t
_iei
;
...
...
src/nas/ies/NSSAI_Inclusion_Mode.cpp
View file @
58c0816c
...
...
@@ -54,9 +54,9 @@ uint8_t NSSAI_Inclusion_Mode::getValue() {
//------------------------------------------------------------------------------
int
NSSAI_Inclusion_Mode
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
encoding NSSAI_Inclusion_Mode IE iei
(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
Encoding NSSAI_Inclusion_Mode IE iei
(0x%x)"
,
_iei
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
-
1
;
}
else
{
uint8_t
octet
=
0
;
...
...
@@ -68,18 +68,19 @@ int NSSAI_Inclusion_Mode::encode2buffer(uint8_t* buf, int len) {
}
else
{
octet
=
(
_iei
<<
4
)
|
(
_value
&
0x0f
);
*
buf
=
octet
;
Logger
::
nas_mm
().
debug
(
"
encoded NSSAI_Inclusion_Mode IE(len(1 octet)
)"
);
Logger
::
nas_mm
().
debug
(
"
Encoded NSSAI_Inclusion_Mode IE(len, 1 octet
)"
);
return
1
;
}
}
return
1
;
}
//------------------------------------------------------------------------------
int
NSSAI_Inclusion_Mode
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"
d
ecoding NSSAI_Inclusion_Mode IE"
);
Logger
::
nas_mm
().
debug
(
"
D
ecoding NSSAI_Inclusion_Mode IE"
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
0
;
}
else
{
uint8_t
octet
=
(
*
buf
);
...
...
@@ -90,7 +91,7 @@ int NSSAI_Inclusion_Mode::decodefrombuffer(
}
_value
=
octet
&
0x0f
;
Logger
::
nas_mm
().
debug
(
"
decoded NSSAI_Inclusion_Mode iei(0x%x) value
(0x%x)"
,
_iei
,
_value
);
"
Decoded NSSAI_Inclusion_Mode iei (0x%x) value
(0x%x)"
,
_iei
,
_value
);
return
1
;
}
}
src/nas/ies/Network_Slicing_Indication.cpp
View file @
58c0816c
...
...
@@ -71,7 +71,7 @@ bool Network_Slicing_Indication::getNSSCI() {
//------------------------------------------------------------------------------
int
Network_Slicing_Indication
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
encoding Network_Slicing_Indication iei
(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
Encoding Network_Slicing_Indication iei
(0x%x)"
,
_iei
);
if
(
len
<
1
)
{
// Logger::nas_mm().error("len is less than %d", length);
return
0
;
...
...
@@ -85,20 +85,21 @@ int Network_Slicing_Indication::encode2buffer(uint8_t* buf, int len) {
}
else
{
octet
=
(
_iei
<<
4
)
|
(
DCNI
<<
1
)
|
NSSCI
;
Logger
::
nas_mm
().
debug
(
"
decoded Network_Slicing_Indication DCNI(0x%x) NSSCI
(0x%x)"
,
octet
,
"
Decoded Network_Slicing_Indication DCNI (0x%x) NSSCI
(0x%x)"
,
octet
,
NSSCI
);
*
buf
=
octet
;
Logger
::
nas_mm
().
debug
(
"
encoded Network_Slicing_Indication IE(len(1 octet)
)"
);
"
Encoded Network_Slicing_Indication IE (len, 1 octet
)"
);
return
1
;
}
return
1
;
}
//------------------------------------------------------------------------------
int
Network_Slicing_Indication
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
0
;
}
else
{
uint8_t
octet
=
(
*
buf
);
...
...
@@ -112,7 +113,7 @@ int Network_Slicing_Indication::decodefrombuffer(
DCNI
=
octet
&
0x02
;
NSSCI
=
octet
&
0x01
;
Logger
::
nas_mm
().
debug
(
"
decoded Network_Slicing_Indication DCNI(0x%x) NSSCI
(0x%x)"
,
DCNI
,
"
Decoded Network_Slicing_Indication DCNI (0x%x) NSSCI
(0x%x)"
,
DCNI
,
NSSCI
);
return
1
;
}
...
...
src/nas/ies/Non_3GPP_NW_Provided_Policies.cpp
View file @
58c0816c
...
...
@@ -56,9 +56,9 @@ uint8_t Non_3GPP_NW_Provided_Policies::getValue() {
//------------------------------------------------------------------------------
int
Non_3GPP_NW_Provided_Policies
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
e
ncoding Non_3GPP_NW_Provided_Policies IE iei(0x%x)"
,
_iei
);
"
E
ncoding Non_3GPP_NW_Provided_Policies IE iei(0x%x)"
,
_iei
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
-
1
;
}
else
{
uint8_t
octet
=
0
;
...
...
@@ -71,18 +71,19 @@ int Non_3GPP_NW_Provided_Policies::encode2buffer(uint8_t* buf, int len) {
octet
=
(
_iei
<<
4
)
|
(
_value
&
0x0f
);
*
buf
=
octet
;
Logger
::
nas_mm
().
debug
(
"
encoded Non_3GPP_NW_Provided_Policies IE(len(1 octet)
)"
);
"
Encoded Non_3GPP_NW_Provided_Policies IE (len, 1 octet
)"
);
return
1
;
}
}
return
1
;
}
//------------------------------------------------------------------------------
int
Non_3GPP_NW_Provided_Policies
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"
d
ecoding Non_3GPP_NW_Provided_Policies IE"
);
Logger
::
nas_mm
().
debug
(
"
D
ecoding Non_3GPP_NW_Provided_Policies IE"
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
l
en is less than one"
);
Logger
::
nas_mm
().
error
(
"
L
en is less than one"
);
return
0
;
}
else
{
uint8_t
octet
=
(
*
buf
);
...
...
@@ -93,7 +94,7 @@ int Non_3GPP_NW_Provided_Policies::decodefrombuffer(
}
_value
=
octet
&
0x0f
;
Logger
::
nas_mm
().
debug
(
"
decoded Non_3GPP_NW_Provided_Policies iei(0x%x) value
(0x%x)"
,
_iei
,
"
Decoded Non_3GPP_NW_Provided_Policies iei (0x%x) value
(0x%x)"
,
_iei
,
_value
);
return
1
;
}
...
...
src/nas/ies/Payload_Container.cpp
View file @
58c0816c
...
...
@@ -83,7 +83,7 @@ void Payload_Container::getValue(bstring& cnt) {
//------------------------------------------------------------------------------
int
Payload_Container
::
encode2buffer
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
e
ncoding Payload_Container iei(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
E
ncoding Payload_Container iei(0x%x)"
,
_iei
);
if
(
len
<
length
)
{
// Logger::nas_mm().error("len is less than %d", length);
// return 0;
...
...
@@ -147,19 +147,20 @@ int Payload_Container::encode2buffer(uint8_t* buf, int len) {
}
}
#endif
Logger
::
nas_mm
().
debug
(
"
e
ncoded Payload_Container len(%d)"
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"
E
ncoded Payload_Container len(%d)"
,
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
Payload_Container
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
return
0
;
}
//------------------------------------------------------------------------------
int
Payload_Container
::
decodefrombuffer
(
uint8_t
*
buf
,
int
len
,
bool
is_option
,
uint8_t
type
)
{
Logger
::
nas_mm
().
debug
(
"
decoding Payload_Container iei
(0x%x)"
,
_iei
);
Logger
::
nas_mm
().
debug
(
"
Decoding Payload_Container iei
(0x%x)"
,
_iei
);
int
decoded_size
=
0
;
if
(
is_option
)
{
decoded_size
++
;
...
...
@@ -211,7 +212,6 @@ int Payload_Container::decodefrombuffer(
CONTENT
.
insert
(
CONTENT
.
end
(),
payloadcontainerentry
);
num_entries
--
;
}
// Logger::nas_mm().debug("decoded Payload_Container value(0x%x)", _value);
Logger
::
nas_mm
().
debug
(
"decoded Payload_Container len(%d)"
,
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Decoded Payload_Container len (%d)"
,
decoded_size
);
return
decoded_size
;
}
src/nas/ies/ServiceType.cpp
View file @
58c0816c
...
...
@@ -70,6 +70,7 @@ int ServiceType::decodefrombuffer(
value
=
(
*
buf
)
&
0x0f
;
return
0
;
}
return
0
;
}
//------------------------------------------------------------------------------
...
...
src/nas/ies/_5GSDeregistrationType.cpp
View file @
58c0816c
...
...
@@ -86,10 +86,11 @@ int _5GSDeregistrationType::encode2buffer(uint8_t* buf, int len) {
Logger
::
nas_mm
().
error
(
"Encoding 5GSDeregistrationType IE"
);
if
(
len
<
1
)
{
Logger
::
nas_mm
().
error
(
"
encoding 5GSDeregistrationType error
(len is less than one)"
);
"
Encoding 5GSDeregistrationType error
(len is less than one)"
);
return
-
1
;
}
*
buf
=
u1
.
b
;
return
0
;
}
//------------------------------------------------------------------------------
...
...
src/nas/ies/_5GSTrackingAreaIdList.cpp
View file @
58c0816c
...
...
@@ -94,11 +94,15 @@ int _5GSTrackingAreaIdList::encode_00_type(
//------------------------------------------------------------------------------
int
_5GSTrackingAreaIdList
::
encode_01_type
(
p_tai_t
item
,
uint8_t
*
buf
,
int
len
)
{}
p_tai_t
item
,
uint8_t
*
buf
,
int
len
)
{
return
1
;
}
//------------------------------------------------------------------------------
int
_5GSTrackingAreaIdList
::
encode_10_type
(
p_tai_t
item
,
uint8_t
*
buf
,
int
len
)
{}
p_tai_t
item
,
uint8_t
*
buf
,
int
len
)
{
return
1
;
}
//------------------------------------------------------------------------------
int
_5GSTrackingAreaIdList
::
encode_mcc_mnc
(
...
...
src/nas/msgs/AuthenticationFailure.cpp
View file @
58c0816c
...
...
@@ -143,4 +143,5 @@ int AuthenticationFailure::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded AuthenticationFailure message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/AuthenticationReject.cpp
View file @
58c0816c
...
...
@@ -102,4 +102,5 @@ int AuthenticationReject::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded AuthenticationReject message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/AuthenticationRequest.cpp
View file @
58c0816c
...
...
@@ -203,4 +203,5 @@ int AuthenticationRequest::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded AuthenticationRequest message (len %d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/AuthenticationResponse.cpp
View file @
58c0816c
...
...
@@ -152,4 +152,5 @@ int AuthenticationResponse::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded AuthenticationResponse message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/AuthenticationResult.cpp
View file @
58c0816c
...
...
@@ -143,4 +143,5 @@ int AuthenticationResult::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded AuthenticationResult message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/DeregistrationAccept.cpp
View file @
58c0816c
...
...
@@ -71,4 +71,5 @@ int DeregistrationAccept::decodefrombuffer(
plain_header
=
header
;
Logger
::
nas_mm
().
debug
(
"decoded De-registrationReject message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/IdentityRequest.cpp
View file @
58c0816c
...
...
@@ -92,4 +92,5 @@ int IdentityRequest::decodefrombuffer(
Logger
::
nas_mm
().
debug
(
"decoded_size(%d)"
,
decoded_size
);
Logger
::
nas_mm
().
debug
(
"decoded IdentityRequest message len(%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/RegistrationAccept.cpp
View file @
58c0816c
...
...
@@ -842,4 +842,5 @@ int RegistrationAccept::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded RegistrationAccept message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/RegistrationComplete.cpp
View file @
58c0816c
...
...
@@ -105,4 +105,5 @@ int RegistrationComplete::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded RegistrationComplete message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/RegistrationRequest.cpp
View file @
58c0816c
...
...
@@ -233,6 +233,7 @@ bool RegistrationRequest::getUeSecurityCapability(uint8_t& ea, uint8_t& ia) {
}
else
{
return
-
1
;
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
@@ -249,6 +250,7 @@ bool RegistrationRequest::getRequestedNssai(
}
else
{
return
-
1
;
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
@@ -273,6 +275,7 @@ bool RegistrationRequest::getS1UeNetworkCapability(uint8_t& eea, uint8_t& eia) {
}
else
{
return
-
1
;
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
@@ -803,7 +806,7 @@ int RegistrationRequest::encode2buffer(uint8_t* buf, int len) {
//------------------------------------------------------------------------------
int
RegistrationRequest
::
decodefrombuffer
(
NasMmPlainHeader
*
header
,
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"
****Decoding RegistrationRequest message****
"
);
Logger
::
nas_mm
().
debug
(
"
Decoding RegistrationRequest message
"
);
int
decoded_size
=
3
;
plain_header
=
header
;
ie_5gsregistrationtype
=
new
_5GSRegistrationType
();
...
...
@@ -1005,5 +1008,6 @@ int RegistrationRequest::decodefrombuffer(
}
}
Logger
::
nas_mm
().
debug
(
"****Decoded RegistrationRequest message (len %d)****"
,
decoded_size
);
"Decoded RegistrationRequest message (len %d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/SecurityModeCommand.cpp
View file @
58c0816c
...
...
@@ -303,4 +303,5 @@ int SecurityModeCommand::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded SecurityModeCommand message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/SecurityModeComplete.cpp
View file @
58c0816c
...
...
@@ -187,4 +187,5 @@ int SecurityModeComplete::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded SecurityModeComplete message len (%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/SecurityModeReject.cpp
View file @
58c0816c
...
...
@@ -93,4 +93,5 @@ int SecurityModeReject::decodefrombuffer(
Logger
::
nas_mm
().
debug
(
"first option iei(0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"decoded SecurityModeReject message len(%d)"
,
decoded_size
);
return
1
;
}
src/nas/msgs/ServiceRequest.cpp
View file @
58c0816c
...
...
@@ -232,6 +232,7 @@ int ServiceRequest::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"Decoded ServiceRequest message len (%d)"
,
decoded_size
);
return
1
;
}
//------------------------------------------------------------------------------
...
...
src/nas/msgs/ULNASTransport.cpp
View file @
58c0816c
...
...
@@ -397,4 +397,5 @@ int ULNASTransport::decodefrombuffer(
}
Logger
::
nas_mm
().
debug
(
"decoded ULNASTransport message len(%d)"
,
decoded_size
);
return
1
;
}
src/ngap/ngapMsgs/InitialContextSetupRequest.cpp
View file @
58c0816c
...
...
@@ -825,6 +825,7 @@ bool InitialContextSetupRequestMsg::getCoreNetworkAssistanceInfo(
taiListForRRcInactive
.
push_back
(
tai_str
);
}
return
true
;
}
//------------------------------------------------------------------------------
...
...
src/ngap/ngapMsgs/UEContextReleaseCommand.cpp
View file @
58c0816c
...
...
@@ -162,4 +162,5 @@ int UEContextReleaseCommandMsg::encode2buffer(uint8_t* buf, int buf_size) {
//------------------------------------------------------------------------------
bool
UEContextReleaseCommandMsg
::
decodefrompdu
(
Ngap_NGAP_PDU_t
*
ngap_msg_pdu
)
{
pdu
=
ngap_msg_pdu
;
return
true
;
}
src/ngap/ngap_app/ngap_message_callback.hpp
View file @
58c0816c
...
...
@@ -82,6 +82,7 @@ int ngap_amf_handle_ng_setup_request(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
i
->
get_msg_name
());
}
return
0
;
}
//------------------------------------------------------------------------------
...
...
@@ -109,6 +110,7 @@ int ngap_amf_handle_initial_ue_message(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
i
->
get_msg_name
());
}
return
0
;
}
//------------------------------------------------------------------------------
...
...
@@ -136,6 +138,7 @@ int ngap_amf_handle_uplink_nas_transport(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
i
->
get_msg_name
());
}
return
0
;
}
//------------------------------------------------------------------------------
...
...
@@ -220,6 +223,7 @@ int ngap_amf_handle_ue_radio_cap_indication(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
i
->
get_msg_name
());
}
return
0
;
}
//------------------------------------------------------------------------------
...
...
@@ -246,6 +250,7 @@ int ngap_amf_handle_ue_context_release_request(
"Could not send ITTI message %s to task TASK_AMF_N2"
,
i
->
get_msg_name
());
}
return
0
;
}
//------------------------------------------------------------------------------
...
...
@@ -383,7 +388,7 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
Ngap_Cause_PR_radioNetwork
)
&&
(
UnSuccessfultransfer
->
getCause
()
==
Ngap_CauseRadioNetwork_multiple_PDU_session_ID_instances
))
{
/*Logger::ngap().debug("
s
ending itti pdu session resource release command
/*Logger::ngap().debug("
S
ending itti pdu session resource release command
to TASK_AMF_N2"); itti_pdu_session_resource_release_command * itti_msg =
new itti_pdu_session_resource_release_command(TASK_NGAP, TASK_AMF_N2);
itti_msg->amf_ue_ngap_id = pduresp->getAmfUeNgapId();
...
...
@@ -409,7 +414,7 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
Logger
::
ngap
().
debug
(
"receive pdu session resource setup response fail(multi pdu session "
"id),set pdu session context isn2sm_avaliable = false"
);
/*Logger::ngap().debug("
s
ending itti ue context release command to
/*Logger::ngap().debug("
S
ending itti ue context release command to
TASK_AMF_N2"); itti_ue_context_release_command * itti_msg = new
itti_ue_context_release_command(TASK_AMF_N1, TASK_AMF_N2);
itti_msg->amf_ue_ngap_id = pduresp->getAmfUeNgapId();
...
...
@@ -424,13 +429,14 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
return
0
;
}
}
return
0
;
}
//------------------------------------------------------------------------------
int
ngap_amf_handle_error_indication
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ngap error indication to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti ngap error indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -438,7 +444,7 @@ int ngap_amf_handle_error_indication(
int
ngap_amf_configuration_update
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti amf configuration update to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti amf configuration update to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -446,7 +452,7 @@ int ngap_amf_configuration_update(
int
amf_status_indication
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti amf status indication to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti amf status indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -454,7 +460,7 @@ int amf_status_indication(
int
cell_traffic_trace
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti cell_traffic_trace to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti cell_traffic_trace to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -462,7 +468,7 @@ int cell_traffic_trace(
int
deactivate_trace
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti deactivate trace to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti deactivate trace to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -470,7 +476,7 @@ int deactivate_trace(
int
downlink_nas_transport
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti downlink nas transport to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti downlink nas transport to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -479,7 +485,7 @@ int downlink_non_UEassociated_nrppa_transport(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti downlink non UEassociated nrppa transport to TASK_AMF_N2"
);
"
S
ending itti downlink non UEassociated nrppa transport to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -488,7 +494,7 @@ int downlink_ran_configuration_transfer(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti downlink ran configuration transfer to TASK_AMF_N2"
);
"
S
ending itti downlink ran configuration transfer to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -497,7 +503,7 @@ int downlink_ran_status_transfer(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti downlink ran status transfer to TASK_AMF_N2"
);
"
S
ending itti downlink ran status transfer to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -506,7 +512,7 @@ int downlink_ue_associated_nappa_transport(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti downlink ue associated nappa transport to TASK_AMF_N2"
);
"
S
ending itti downlink ue associated nappa transport to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -514,7 +520,7 @@ int downlink_ue_associated_nappa_transport(
int
handover_cancel
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti handover cancel to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti handover cancel to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -522,7 +528,7 @@ int handover_cancel(
int
handover_preparation
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti handover preparation to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti handover preparation to TASK_AMF_N2"
);
asn_fprint
(
stderr
,
&
asn_DEF_Ngap_NGAP_PDU
,
message_p
);
HandoverRequiredMsg
*
handoverrequired
=
new
HandoverRequiredMsg
();
if
(
!
handoverrequired
->
decodefrompdu
(
message_p
))
{
...
...
@@ -549,7 +555,7 @@ int handover_preparation(
int
handover_notification
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti handover Notification to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti handover Notification to TASK_AMF_N2"
);
asn_fprint
(
stderr
,
&
asn_DEF_Ngap_NGAP_PDU
,
message_p
);
HandoverNotifyMsg
*
handoverNotify
=
new
HandoverNotifyMsg
();
if
(
!
handoverNotify
->
decodefrompdu
(
message_p
))
{
...
...
@@ -577,7 +583,7 @@ int handover_resource_allocation(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti handover resource allocation to TASK_AMF_N2"
);
"
S
ending itti handover resource allocation to TASK_AMF_N2"
);
/*receive handover request acknowedge*/
asn_fprint
(
stderr
,
&
asn_DEF_Ngap_NGAP_PDU
,
message_p
);
HandoverRequestAck
*
handoverRequestAck
=
new
HandoverRequestAck
();
...
...
@@ -606,7 +612,7 @@ int location_reporting_control(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti location reporting control to TASK_AMF_N2"
);
"
S
ending itti location reporting control to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -615,7 +621,7 @@ int location_reporting_failure_indication(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti location reporting failure indication to TASK_AMF_N2"
);
"
S
ending itti location reporting failure indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -623,7 +629,7 @@ int location_reporting_failure_indication(
int
location_report
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti location report to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti location report to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -632,7 +638,7 @@ int nas_non_delivery_indication(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti nas non delivery indication to TASK_AMF_N2"
);
"
S
ending itti nas non delivery indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -640,7 +646,7 @@ int nas_non_delivery_indication(
int
ng_reset
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ng reset to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti ng reset to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -648,7 +654,7 @@ int ng_reset(
int
overload_start
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti overload start to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti overload start to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -656,7 +662,7 @@ int overload_start(
int
overload_stop
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti overload stop to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti overload stop to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -664,7 +670,7 @@ int overload_stop(
int
paging
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti paging to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti paging to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -673,7 +679,7 @@ int ngap_amf_handle_path_switch_request(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ngap amf handle path switch request to TASK_AMF_N2"
);
"
S
ending itti ngap amf handle path switch request to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -682,7 +688,7 @@ int pdu_session_resource_modify(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti pdu session resource modify to TASK_AMF_N2"
);
"
S
ending itti pdu session resource modify to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -691,7 +697,7 @@ int pdu_session_resource_modify_indication(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti pdu session resource modify indication to TASK_AMF_N2"
);
"
S
ending itti pdu session resource modify indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -700,7 +706,7 @@ int pdu_session_resource_notify(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti pdu session resource notify to TASK_AMF_N2"
);
"
S
ending itti pdu session resource notify to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -708,7 +714,7 @@ int pdu_session_resource_notify(
int
private_message
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti private message to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti private message to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -716,7 +722,7 @@ int private_message(
int
pws_cancel
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti pws cancel to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti pws cancel to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -724,7 +730,7 @@ int pws_cancel(
int
pws_failure_indication
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti pws failure indication to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti pws failure indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -732,7 +738,7 @@ int pws_failure_indication(
int
pws_restart_indication
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti pws restart indication to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti pws restart indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -740,7 +746,7 @@ int pws_restart_indication(
int
ran_configuration_update
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ran configuration update to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti ran configuration update to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -748,7 +754,7 @@ int ran_configuration_update(
int
reroute_nas_request
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti reroute nas request to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti reroute nas request to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -757,7 +763,7 @@ int rrc_inactive_transition_report(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti rrc inactive transition report to TASK_AMF_N2"
);
"
S
ending itti rrc inactive transition report to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -765,7 +771,7 @@ int rrc_inactive_transition_report(
int
trace_failure_indication
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti trace failure indication to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti trace failure indication to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -773,7 +779,7 @@ int trace_failure_indication(
int
trace_start
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti trace start to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti trace start to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -781,7 +787,7 @@ int trace_start(
int
ue_context_modification
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ue context modification to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti ue context modification to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -789,7 +795,7 @@ int ue_context_modification(
int
ue_radio_capability_check
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ue radio capability check to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti ue radio capability check to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -797,7 +803,7 @@ int ue_radio_capability_check(
int
ue_tnla_binding_release
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti ue tnla binding release to TASK_AMF_N2"
);
Logger
::
ngap
().
debug
(
"
S
ending itti ue tnla binding release to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -806,7 +812,7 @@ int uplink_non_ue_associated_nrppa_transport(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti uplink non ue associated nrppa transport to TASK_AMF_N2"
);
"
S
ending itti uplink non ue associated nrppa transport to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -815,7 +821,7 @@ int uplink_ran_configuration_transfer(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti uplink ran configuration transfer to TASK_AMF_N2"
);
"
S
ending itti uplink ran configuration transfer to TASK_AMF_N2"
);
return
0
;
}
...
...
@@ -824,13 +830,13 @@ int uplink_ran_status_transfer(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti uplink ran status transfer to TASK_AMF_N2"
);
"
S
ending itti uplink ran status transfer to TASK_AMF_N2"
);
/*receive uplinkranstatustransfer*/
asn_fprint
(
stderr
,
&
asn_DEF_Ngap_NGAP_PDU
,
message_p
);
UplinkRANStatusTransfer
*
Uplinkranstatustransfer
=
new
UplinkRANStatusTransfer
();
if
(
!
Uplinkranstatustransfer
->
defromPDU
(
message_p
))
{
Logger
::
ngap
().
error
(
"
d
ecoding Uplinkranstatustransfer message error"
);
Logger
::
ngap
().
error
(
"
D
ecoding Uplinkranstatustransfer message error"
);
return
-
1
;
}
itti_uplinkranstatsutransfer
*
itti_uplinkran_sta_tran
=
...
...
@@ -854,7 +860,7 @@ int uplink_ue_associated_nrppa_transport(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
struct
Ngap_NGAP_PDU
*
message_p
)
{
Logger
::
ngap
().
debug
(
"
s
ending itti uplink ue associated nrppa transport to TASK_AMF_N2"
);
"
S
ending itti uplink ue associated nrppa transport to TASK_AMF_N2"
);
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment