Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-SMF
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
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-SMF
Commits
ff84db1f
Commit
ff84db1f
authored
Nov 21, 2019
by
wangyongshou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add handover cancel msg
parent
5df8604a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
284 additions
and
1 deletion
+284
-1
src/NgapSmfLayer/ng_pdu_handover_cancel.c
src/NgapSmfLayer/ng_pdu_handover_cancel.c
+273
-0
src/NgapSmfLayer/ng_pdu_handover_cancel.h
src/NgapSmfLayer/ng_pdu_handover_cancel.h
+8
-0
src/smf_app/CMakeLists.txt
src/smf_app/CMakeLists.txt
+1
-0
src/smf_app/smf_app.cpp
src/smf_app/smf_app.cpp
+2
-1
No files found.
src/NgapSmfLayer/ng_pdu_handover_cancel.c
0 → 100755
View file @
ff84db1f
#include "ng_pdu_handover_cancel.h"
#include "Ngap_NGAP-PDU.h"
#include "Ngap_ProtocolIE-Field.h"
#include "Ngap_ProcedureCode.h"
#include "Ngap_InitiatingMessage.h"
#include "Ngap_HandoverCancel.h"
#include "Ngap_CauseRadioNetwork.h"
#include "Ngap_DirectForwardingPathAvailability.h"
#include "common_defs.h"
#include "common_types.h"
#include "../common/ngap/ngap_common.h"
#include "INTEGER.h"
#include "asn_SEQUENCE_OF.h"
#include "OCTET_STRING.h"
#define BUF_LEN 1024
Ngap_HandoverCancelIEs_t
*
make_handover_cancel_RAN_UE_NGAP_ID
(
uint32_t
rAN_UE_NGAP_ID
)
{
Ngap_HandoverCancelIEs_t
*
ie
;
ie
=
calloc
(
1
,
sizeof
(
Ngap_HandoverCancelIEs_t
));
ie
->
id
=
Ngap_ProtocolIE_ID_id_RAN_UE_NGAP_ID
;
ie
->
criticality
=
Ngap_Criticality_reject
;
ie
->
value
.
present
=
Ngap_HandoverCancelIEs__value_PR_RAN_UE_NGAP_ID
;
ie
->
value
.
choice
.
RAN_UE_NGAP_ID
=
rAN_UE_NGAP_ID
;
printf
(
"RAN_UE_NGAP_ID:0x%x
\n
"
,
ie
->
value
.
choice
.
RAN_UE_NGAP_ID
);
return
ie
;
}
Ngap_HandoverCancelIEs_t
*
make_handover_cancel_AMF_UE_NGAP_ID
(
uint64_t
amf_UE_NGAP_ID
)
{
Ngap_HandoverCancelIEs_t
*
ie
=
NULL
;
ie
=
calloc
(
1
,
sizeof
(
Ngap_HandoverCancelIEs_t
));
ie
->
id
=
Ngap_ProtocolIE_ID_id_AMF_UE_NGAP_ID
;
ie
->
criticality
=
Ngap_Criticality_reject
;
ie
->
value
.
present
=
Ngap_HandoverCancelIEs__value_PR_AMF_UE_NGAP_ID
;
asn_ulong2INTEGER
(
&
ie
->
value
.
choice
.
AMF_UE_NGAP_ID
,
amf_UE_NGAP_ID
&
AMF_UE_NGAP_ID_MASK_
);
printf
(
"AMF_UE_NGAP_ID:0x%x
\n
"
,
ie
->
value
.
choice
.
AMF_UE_NGAP_ID
);
return
ie
;
}
Ngap_HandoverCancelIEs_t
*
make_handover_cancel_CauseRadioNetwork
(
const
long
radioNetwork
)
{
Ngap_HandoverCancelIEs_t
*
ie
=
NULL
;
ie
=
calloc
(
1
,
sizeof
(
Ngap_HandoverCancelIEs_t
));
ie
->
id
=
Ngap_ProtocolIE_ID_id_Cause
;
ie
->
criticality
=
Ngap_Criticality_ignore
;
ie
->
value
.
present
=
Ngap_HandoverCancelIEs__value_PR_Cause
;
ie
->
value
.
choice
.
Cause
.
present
=
Ngap_Cause_PR_radioNetwork
;
ie
->
value
.
choice
.
Cause
.
choice
.
radioNetwork
=
radioNetwork
;
printf
(
"radioNetwork:0x%x
\n
"
,
ie
->
value
.
choice
.
Cause
.
choice
.
radioNetwork
);
return
ie
;
}
void
add_pdu_handover_cancel_ie
(
Ngap_HandoverCancel_t
*
ngapPDUHandoverCancel
,
Ngap_HandoverCancelIEs_t
*
ie
)
{
int
ret
;
ret
=
ASN_SEQUENCE_ADD
(
&
ngapPDUHandoverCancel
->
protocolIEs
.
list
,
ie
);
if
(
ret
!=
0
)
{
fprintf
(
stderr
,
"Failed to add ie
\n
"
);
return
;
}
return
;
}
Ngap_NGAP_PDU_t
*
ngap_generate_ng_handover_cancel
(
const
char
*
inputBuf
)
{
Ngap_NGAP_PDU_t
*
pdu
=
NULL
;
pdu
=
calloc
(
1
,
sizeof
(
Ngap_NGAP_PDU_t
));
pdu
->
present
=
Ngap_NGAP_PDU_PR_initiatingMessage
;
pdu
->
choice
.
initiatingMessage
=
calloc
(
1
,
sizeof
(
Ngap_InitiatingMessage_t
));
pdu
->
choice
.
initiatingMessage
->
procedureCode
=
Ngap_ProcedureCode_id_HandoverCancel
;
pdu
->
choice
.
initiatingMessage
->
criticality
=
Ngap_Criticality_reject
;
pdu
->
choice
.
initiatingMessage
->
value
.
present
=
Ngap_InitiatingMessage__value_PR_HandoverCancel
;
Ngap_HandoverCancel_t
*
ngapHandoverCancel
=
NULL
;
ngapHandoverCancel
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
HandoverCancel
;
Ngap_HandoverCancelIEs_t
*
ie
=
NULL
;
//Ngap_AMF_UE_NGAP_ID_t
uint64_t
amf_ue_ngap_id
=
0x80
;
ie
=
make_handover_cancel_AMF_UE_NGAP_ID
(
amf_ue_ngap_id
);
add_pdu_handover_cancel_ie
(
ngapHandoverCancel
,
ie
);
//Ngap_AMF_UE_NGAP_ID_t
uint32_t
ran_ue_ngap_id
=
0x81
;
ie
=
make_handover_cancel_RAN_UE_NGAP_ID
(
ran_ue_ngap_id
);
add_pdu_handover_cancel_ie
(
ngapHandoverCancel
,
ie
);
//Cause:CauseRadioNetwork
ie
=
make_handover_cancel_CauseRadioNetwork
(
Ngap_CauseRadioNetwork_unspecified
);
add_pdu_handover_cancel_ie
(
ngapHandoverCancel
,
ie
);
return
pdu
;
}
int
ngap_amf_handle_ng_pdu_handover_cancel
(
const
sctp_assoc_id_t
assoc_id
,
const
sctp_stream_id_t
stream
,
Ngap_NGAP_PDU_t
*
pdu
){
int
rc
=
RETURNok
;
#if 0
gnb_description_t * gnb_association = NULL;
//gnb_description_t * gnb_ref = NULL;
uint32_t gnb_id = 0;
char *gnb_name = NULL;
int gnb_name_size = 0;
int ta_ret = 0;
uint32_t max_gnb_connected = 0;
int i = 0;
#endif
int
i
=
0
;
Ngap_HandoverCancel_t
*
container
=
NULL
;
Ngap_HandoverCancelIEs_t
*
ie
=
NULL
;
Ngap_HandoverCancelIEs_t
*
ie_gnb_name
=
NULL
;
unsigned
long
amf_ue_ngap_id
=
0
;
uint32_t
ran_ue_ngap_id
=
0
;
uint32_t
radioNetwork
=
0
;
uint32_t
DirectForwardingPathAvailability
=
0
;
DevAssert
(
pdu
!=
NULL
);
//OAILOG_INFO(LOG_NGAP,"----------------------- DECODED NG SETUP REQUEST NGAP MSG --------------------------\n");
//asn_fprint(stdout, &asn_DEF_Ngap_NGAP_PDU, pdu);
//OAILOG_INFO(LOG_NGAP,"----------------------- DECODED NG SETUP REQUEST NGAP MSG --------------------------\n");
container
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
HandoverCancel
;
//AMF_UE_NGAP_ID
NGAP_FIND_PROTOCOLIE_BY_ID
(
Ngap_HandoverCancelIEs_t
,
ie
,
container
,
Ngap_ProtocolIE_ID_id_AMF_UE_NGAP_ID
,
false
);
if
(
ie
)
{
asn_INTEGER2ulong
(
&
ie
->
value
.
choice
.
AMF_UE_NGAP_ID
,
&
amf_ue_ngap_id
);
printf
(
"amf_ue_ngap_id, 0x%x
\n
"
,
amf_ue_ngap_id
);
}
//Ngap_AMF_UE_NGAP_ID_t
NGAP_FIND_PROTOCOLIE_BY_ID
(
Ngap_HandoverCancelIEs_t
,
ie
,
container
,
Ngap_ProtocolIE_ID_id_RAN_UE_NGAP_ID
,
false
);
if
(
ie
)
{
ran_ue_ngap_id
=
ie
->
value
.
choice
.
RAN_UE_NGAP_ID
;
printf
(
"ran_ue_ngap_id, 0x%x
\n
"
,
ran_ue_ngap_id
);
}
//cause
NGAP_FIND_PROTOCOLIE_BY_ID
(
Ngap_HandoverCancelIEs_t
,
ie
,
container
,
Ngap_ProtocolIE_ID_id_Cause
,
false
);
if
(
ie
)
{
switch
(
ie
->
value
.
choice
.
Cause
.
present
)
{
case
Ngap_Cause_PR_radioNetwork
:
{
radioNetwork
=
ie
->
value
.
choice
.
Cause
.
choice
.
radioNetwork
;
printf
(
"radioNetwork, 0x%x
\n
"
,
radioNetwork
);
}
break
;
case
Ngap_Cause_PR_transport
:
{
}
break
;
case
Ngap_Cause_PR_nas
:
{
}
break
;
case
Ngap_Cause_PR_protocol
:
{
}
break
;
case
Ngap_Cause_PR_misc
:
{
}
break
;
default:
printf
(
"don't know cause type:%d
\n
"
,
ie
->
value
.
choice
.
Cause
.
present
);
break
;
}
}
}
int
make_NGAP_PduHandOverCancel
(
const
char
*
inputBuf
,
const
char
*
OutputBuf
)
{
printf
(
"pdu session hand over cancel, start--------------------
\n\n
"
);
int
ret
=
0
;
int
rc
=
RETURNok
;
const
sctp_assoc_id_t
assoc_id
=
0
;
const
sctp_stream_id_t
stream
=
0
;
Ngap_NGAP_PDU_t
message
=
{
0
};
//wys: 1024 ?
size_t
buffer_size
=
1024
;
void
*
buffer
=
calloc
(
1
,
buffer_size
);
asn_enc_rval_t
er
;
Ngap_NGAP_PDU_t
*
pdu
=
ngap_generate_ng_handover_cancel
(
inputBuf
);
if
(
!
pdu
)
goto
ERROR
;
asn_fprint
(
stderr
,
&
asn_DEF_Ngap_NGAP_PDU
,
pdu
);
ret
=
check_NGAP_pdu_constraints
(
pdu
);
if
(
ret
<
0
)
{
printf
(
"ng hand over cancel Constraint validation failed
\n
"
);
rc
=
RETURNerror
;
goto
ERROR
;
}
//encode
er
=
aper_encode_to_buffer
(
&
asn_DEF_Ngap_NGAP_PDU
,
NULL
,
pdu
,
buffer
,
buffer_size
);
if
(
er
.
encoded
<
0
)
{
printf
(
"ng hand over cancel encode failed,er.encoded:%d
\n
"
,
er
.
encoded
);
rc
=
RETURNerror
;
goto
ERROR
;
}
bstring
msgBuf
=
blk2bstr
(
buffer
,
er
.
encoded
);
//decode
ngap_amf_decode_pdu
(
&
message
,
msgBuf
);
ngap_amf_handle_ng_pdu_handover_cancel
(
0
,
0
,
&
message
);
//Free pdu
ASN_STRUCT_FREE
(
asn_DEF_Ngap_NGAP_PDU
,
pdu
);
if
(
buffer
)
{
free
(
buffer
);
buffer
=
NULL
;
}
printf
(
"pdu session hand over cancel, finish--------------------
\n\n
"
);
return
rc
;
ERROR:
//Free pdu
if
(
pdu
)
ASN_STRUCT_FREE
(
asn_DEF_Ngap_NGAP_PDU
,
pdu
);
if
(
buffer
)
{
free
(
buffer
);
buffer
=
NULL
;
}
return
rc
;
}
src/NgapSmfLayer/ng_pdu_handover_cancel.h
0 → 100755
View file @
ff84db1f
#ifndef NG_PDU_HANDOVER_CANCEL_H_
#define NG_PDU_HANDOVER_CANCEL_H_
int
make_NGAP_PduHandOverCancel
(
const
char
*
inputBuf
,
const
char
*
outputBuf
);
#endif
src/smf_app/CMakeLists.txt
View file @
ff84db1f
...
...
@@ -51,6 +51,7 @@ add_library (SMF STATIC
${
SRC_TOP_DIR
}
/NgapSmfLayer/ng_pdu_handover_notify.c
${
SRC_TOP_DIR
}
/NgapSmfLayer/ng_pdu_path_switch_request.c
${
SRC_TOP_DIR
}
/NgapSmfLayer/ng_pdu_path_switch_request_failure.c
${
SRC_TOP_DIR
}
/NgapSmfLayer/ng_pdu_handover_cancel.c
smf_app.cpp
smf_config.cpp
smf_context.cpp
...
...
src/smf_app/smf_app.cpp
View file @
ff84db1f
...
...
@@ -63,7 +63,7 @@ extern "C"{
#include "../NgapSmfLayer/ng_pdu_handover_notify.h"
#include "../NgapSmfLayer/ng_pdu_path_switch_request.h"
#include "../NgapSmfLayer/ng_pdu_path_switch_request_failure.h"
#include "../NgapSmfLayer/ng_pdu_handover_cancel.h"
}
#include <stdexcept>
...
...
@@ -2421,6 +2421,7 @@ void smf_app::create_n2_sm_information(std::shared_ptr<itti_n11_create_sm_contex
make_NGAP_PduPathSwitchRequest
(
""
,
""
);
make_NGAP_PduPathSwitchRequestFailure
(
""
,
""
);
make_NGAP_PduHandOverCancel
(
""
,
""
);
//make_NGAP_PduSessionResourceReleaseCommand("", "");
...
...
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