Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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
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
Michael Black
OpenXG-RAN
Commits
7a6f9659
Commit
7a6f9659
authored
Jul 29, 2022
by
laurent
Committed by
Robert Schmidt
Aug 01, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gtp-u pdu session extension header implementation, this extension header is mantadory in 5G
parent
add469e7
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
238 additions
and
163 deletions
+238
-163
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+11
-3
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+11
-3
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+11
-3
openair2/COMMON/gtpv1_u_messages_types.h
openair2/COMMON/gtpv1_u_messages_types.h
+1
-0
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+20
-18
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+20
-16
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+23
-20
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+4
-2
openair3/ocp-gtpu/gtp_itf.cpp
openair3/ocp-gtpu/gtp_itf.cpp
+127
-96
openair3/ocp-gtpu/gtp_itf.h
openair3/ocp-gtpu/gtp_itf.h
+10
-2
No files found.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
7a6f9659
...
...
@@ -100,9 +100,17 @@ nfapi_ue_release_request_body_t release_rntis;
//Fixme: Uniq dirty DU instance, by global var, datamodel need better management
instance_t
DUuniqInstance
=
0
;
instance_t
CUuniqInstance
=
0
;
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_bearer_id
,
teid_t
outgoing_teid
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
)
{
return
0
;
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_bearer_id
,
teid_t
outgoing_teid
,
int
qfi
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
,
gtpCallbackSDAP
callBackSDAP
)
{
return
0
;
}
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
)
{
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
7a6f9659
...
...
@@ -92,9 +92,17 @@ int oai_nfapi_nr_rach_indication(nfapi_nr_rach_indication_t *ind) { return(0);
//Fixme: Uniq dirty DU instance, by global var, datamodel need better management
instance_t
DUuniqInstance
=
0
;
instance_t
CUuniqInstance
=
0
;
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_bearer_id
,
teid_t
outgoing_teid
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
)
{
return
0
;
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_bearer_id
,
teid_t
outgoing_teid
,
int
qfi
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
,
gtpCallbackSDAP
callBackSDAP
)
{
return
0
;
}
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
)
{
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
7a6f9659
...
...
@@ -95,9 +95,17 @@ nfapi_ue_release_request_body_t release_rntis;
//Fixme: Uniq dirty DU instance, by global var, datamodel need better management
instance_t
DUuniqInstance
=
0
;
instance_t
CUuniqInstance
=
0
;
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_bearer_id
,
teid_t
outgoing_teid
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
)
{
return
0
;
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_bearer_id
,
teid_t
outgoing_teid
,
int
qfi
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
,
gtpCallbackSDAP
callBackSDAP
)
{
return
0
;
}
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
)
{
...
...
openair2/COMMON/gtpv1_u_messages_types.h
View file @
7a6f9659
...
...
@@ -181,6 +181,7 @@ typedef struct gtpv1u_gnb_create_tunnel_req_s {
int
num_tunnels
;
//teid_t upf_NGu_teid[NR_GTPV1U_MAX_BEARERS_PER_UE]; ///< Tunnel Endpoint Identifier
teid_t
outgoing_teid
[
NR_GTPV1U_MAX_BEARERS_PER_UE
];
int
outgoing_qfi
[
NR_GTPV1U_MAX_BEARERS_PER_UE
];
pdusessionid_t
pdusession_id
[
NR_GTPV1U_MAX_BEARERS_PER_UE
];
ebi_t
incoming_rb_id
[
NR_GTPV1U_MAX_BEARERS_PER_UE
];
//ebi_t outgoing_rb_id[NR_GTPV1U_MAX_BEARERS_PER_UE];
...
...
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
7a6f9659
...
...
@@ -515,15 +515,16 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
int
sz
=
sizeof
(
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
tl_address
);
memcpy
(
addr
.
buffer
,
&
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
tl_address
,
sz
);
addr
.
length
=
sz
*
8
;
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_ul_tnl
[
j
].
teid
=
newGtpuCreateTunnel
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_setup_req
->
rnti
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
drb_id
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
drb_id
,
0xFFFF
,
// We will set the right value from DU answer
addr
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
port
,
cu_f1u_data_req
);
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_ul_tnl
[
j
].
teid
=
newGtpuCreateTunnel
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_setup_req
->
rnti
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
drb_id
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
drb_id
,
0xFFFF
,
// We will set the right value from DU answer
-
1
,
// no qfi
addr
,
f1ap_ue_context_setup_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
port
,
cu_f1u_data_req
,
NULL
);
/* 12.3.1 ULTunnels_ToBeSetup_Item */
asn1cSequenceAdd
(
drbs_toBeSetup_item
->
uLUPTNLInformation_ToBeSetup_List
.
list
,
F1AP_ULUPTNLInformation_ToBeSetup_Item_t
,
uLUPTNLInformation_ToBeSetup_Item
);
...
...
@@ -1491,15 +1492,16 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, f1ap_ue_context
memcpy
(
addr
.
buffer
,
&
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
tl_address
,
sz
);
addr
.
length
=
sz
*
8
;
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
up_ul_tnl
[
j
].
teid
=
newGtpuCreateTunnel
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_modification_req
->
rnti
,
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
drb_id
,
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
drb_id
,
0xFFFF
,
// We will set the right value from DU answer
addr
,
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
port
,
cu_f1u_data_req
);
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
up_ul_tnl
[
j
].
teid
=
newGtpuCreateTunnel
(
getCxt
(
CUtype
,
instance
)
->
gtpInst
,
f1ap_ue_context_modification_req
->
rnti
,
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
drb_id
,
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
drb_id
,
0xFFFF
,
// We will set the right value from DU answer
-
1
,
// no qfi
addr
,
f1ap_ue_context_modification_req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
0
].
port
,
cu_f1u_data_req
,
NULL
);
/* 12.3.1 ULTunnels_ToBeSetup_Item */
asn1cSequenceAdd
(
drbs_toBeSetupMod_item
->
uLUPTNLInformation_ToBeSetup_List
.
list
,
F1AP_ULUPTNLInformation_ToBeSetup_Item_t
,
uLUPTNLInformation_ToBeSetup_Item
);
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
7a6f9659
...
...
@@ -187,14 +187,16 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
transport_layer_addr_t
addr
;
memcpy
(
addr
.
buffer
,
&
drb_p
->
up_ul_tnl
[
0
].
tl_address
,
sizeof
(
drb_p
->
up_ul_tnl
[
0
].
tl_address
));
addr
.
length
=
sizeof
(
drb_p
->
up_ul_tnl
[
0
].
tl_address
)
*
8
;
drb_p
->
up_dl_tnl
[
0
].
teid
=
newGtpuCreateTunnel
(
INSTANCE_DEFAULT
,
f1ap_ue_context_setup_req
->
rnti
,
drb_p
->
drb_id
,
drb_p
->
drb_id
,
drb_p
->
up_ul_tnl
[
0
].
teid
,
addr
,
drb_p
->
up_ul_tnl
[
0
].
port
,
lteDURecvCb
);
drb_p
->
up_dl_tnl
[
0
].
teid
=
newGtpuCreateTunnel
(
INSTANCE_DEFAULT
,
f1ap_ue_context_setup_req
->
rnti
,
drb_p
->
drb_id
,
drb_p
->
drb_id
,
drb_p
->
up_ul_tnl
[
0
].
teid
,
-
1
,
// no qfi
addr
,
drb_p
->
up_ul_tnl
[
0
].
port
,
lteDURecvCb
,
NULL
);
drb_p
->
up_dl_tnl_length
++
;
}
}
...
...
@@ -1171,14 +1173,16 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
transport_layer_addr_t
addr
;
memcpy
(
addr
.
buffer
,
&
drb_p
->
up_ul_tnl
[
0
].
tl_address
,
sizeof
(
drb_p
->
up_ul_tnl
[
0
].
tl_address
));
addr
.
length
=
sizeof
(
drb_p
->
up_ul_tnl
[
0
].
tl_address
)
*
8
;
drb_p
->
up_dl_tnl
[
0
].
teid
=
newGtpuCreateTunnel
(
INSTANCE_DEFAULT
,
f1ap_ue_context_modification_req
->
rnti
,
drb_p
->
drb_id
,
drb_p
->
drb_id
,
drb_p
->
up_ul_tnl
[
0
].
teid
,
addr
,
drb_p
->
up_ul_tnl
[
0
].
port
,
lteDURecvCb
);
drb_p
->
up_dl_tnl
[
0
].
teid
=
newGtpuCreateTunnel
(
INSTANCE_DEFAULT
,
f1ap_ue_context_modification_req
->
rnti
,
drb_p
->
drb_id
,
drb_p
->
drb_id
,
drb_p
->
up_ul_tnl
[
0
].
teid
,
-
1
,
// no qfi
addr
,
drb_p
->
up_ul_tnl
[
0
].
port
,
lteDURecvCb
,
NULL
);
drb_p
->
up_dl_tnl_length
++
;
}
}
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
7a6f9659
...
...
@@ -1767,15 +1767,16 @@ rrc_gNB_process_RRCConnectionReestablishmentComplete(
}
}
gtpv1u_gnb_create_tunnel_req_t
create_tunnel_req
;
gtpv1u_gnb_create_tunnel_req_t
create_tunnel_req
=
{
0
}
;
/* Save e RAB information for later */
memset
(
&
create_tunnel_req
,
0
,
sizeof
(
create_tunnel_req
));
for
(
j
=
0
,
i
=
0
;
i
<
NB_RB_MAX
;
i
++
)
{
if
(
ue_context_pP
->
ue_context
.
pduSession
[
i
].
status
==
PDU_SESSION_STATUS_ESTABLISHED
||
ue_context_pP
->
ue_context
.
pduSession
[
i
].
status
==
PDU_SESSION_STATUS_DONE
)
{
create_tunnel_req
.
pdusession_id
[
j
]
=
ue_context_pP
->
ue_context
.
pduSession
[
i
].
param
.
pdusession_id
;
create_tunnel_req
.
incoming_rb_id
[
j
]
=
i
+
1
;
create_tunnel_req
.
outgoing_teid
[
j
]
=
ue_context_pP
->
ue_context
.
pduSession
[
i
].
param
.
gtp_teid
;
// to be developped, use the first QFI only
create_tunnel_req
.
outgoing_qfi
[
j
]
=
ue_context_pP
->
ue_context
.
pduSession
[
i
].
param
.
qos
[
0
].
qfi
;
memcpy
(
create_tunnel_req
.
dst_addr
[
j
].
buffer
,
ue_context_pP
->
ue_context
.
pduSession
[
i
].
param
.
upf_addr
.
buffer
,
sizeof
(
uint8_t
)
*
20
);
...
...
@@ -2805,8 +2806,6 @@ rrc_gNB_decode_dcch(
SRBs
[
0
].
lcid
=
2
;
/*Instruction towards the DU for DRB configuration and tunnel creation*/
gtpv1u_gnb_create_tunnel_req_t
create_tunnel_req
;
memset
(
&
create_tunnel_req
,
0
,
sizeof
(
gtpv1u_gnb_create_tunnel_req_t
));
req
->
drbs_to_be_setup
=
malloc
(
1
*
sizeof
(
f1ap_drb_to_be_setup_t
));
req
->
drbs_to_be_setup_length
=
1
;
f1ap_drb_to_be_setup_t
*
DRBs
=
req
->
drbs_to_be_setup
;
...
...
@@ -3433,14 +3432,16 @@ static void rrc_DU_process_ue_context_setup_request(MessageDef *msg_p, const cha
addr
.
length
=
sizeof
(
drb_p
.
up_ul_tnl
[
0
].
tl_address
)
*
8
;
extern
instance_t
DUuniqInstance
;
if
(
!
drb_id_to_setup_start
)
drb_id_to_setup_start
=
drb_p
.
drb_id
;
incoming_teid
=
newGtpuCreateTunnel
(
DUuniqInstance
,
req
->
rnti
,
drb_p
.
drb_id
,
drb_p
.
drb_id
,
drb_p
.
up_ul_tnl
[
0
].
teid
,
addr
,
drb_p
.
up_ul_tnl
[
0
].
port
,
DURecvCb
);
incoming_teid
=
newGtpuCreateTunnel
(
DUuniqInstance
,
req
->
rnti
,
drb_p
.
drb_id
,
drb_p
.
drb_id
,
drb_p
.
up_ul_tnl
[
0
].
teid
,
-
1
,
// no qfi
addr
,
drb_p
.
up_ul_tnl
[
0
].
port
,
DURecvCb
,
NULL
);
}
}
...
...
@@ -3572,14 +3573,16 @@ static void rrc_DU_process_ue_context_modification_request(MessageDef *msg_p, co
memcpy
(
addr
.
buffer
,
&
drb_p
.
up_ul_tnl
[
0
].
tl_address
,
sizeof
(
drb_p
.
up_ul_tnl
[
0
].
tl_address
));
addr
.
length
=
sizeof
(
drb_p
.
up_ul_tnl
[
0
].
tl_address
)
*
8
;
extern
instance_t
DUuniqInstance
;
incoming_teid
=
newGtpuCreateTunnel
(
DUuniqInstance
,
req
->
rnti
,
drb_p
.
drb_id
,
drb_p
.
drb_id
,
drb_p
.
up_ul_tnl
[
0
].
teid
,
addr
,
drb_p
.
up_ul_tnl
[
0
].
port
,
DURecvCb
);
incoming_teid
=
newGtpuCreateTunnel
(
DUuniqInstance
,
req
->
rnti
,
drb_p
.
drb_id
,
drb_p
.
drb_id
,
drb_p
.
up_ul_tnl
[
0
].
teid
,
-
1
,
// no qfi
addr
,
drb_p
.
up_ul_tnl
[
0
].
port
,
DURecvCb
,
NULL
);
}
}
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
7a6f9659
...
...
@@ -474,7 +474,6 @@ rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(
rrc_gNB_ue_context_t
*
ue_context_p
=
NULL
;
protocol_ctxt_t
ctxt
=
{
0
};
uint8_t
pdu_sessions_done
=
0
;
gtpv1u_gnb_create_tunnel_req_t
create_tunnel_req
;
gtpv1u_gnb_create_tunnel_resp_t
create_tunnel_resp
;
uint8_t
inde_list
[
NR_NB_RB_MAX
-
3
]
=
{
0
};
int
ret
=
0
;
...
...
@@ -503,7 +502,7 @@ rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(
uint8_t
nb_pdusessions_tosetup
=
NGAP_INITIAL_CONTEXT_SETUP_REQ
(
msg_p
).
nb_of_pdusessions
;
if
(
nb_pdusessions_tosetup
!=
0
)
{
memset
(
&
create_tunnel_req
,
0
,
sizeof
(
gtpv1u_gnb_create_tunnel_req_t
))
;
gtpv1u_gnb_create_tunnel_req_t
create_tunnel_req
=
{
0
}
;
for
(
int
i
=
0
;
i
<
NR_NB_RB_MAX
-
3
;
i
++
)
{
if
(
ue_context_p
->
ue_context
.
pduSession
[
i
].
status
>=
PDU_SESSION_STATUS_DONE
)
continue
;
...
...
@@ -512,6 +511,8 @@ rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(
create_tunnel_req
.
pdusession_id
[
pdu_sessions_done
]
=
NGAP_INITIAL_CONTEXT_SETUP_REQ
(
msg_p
).
pdusession_param
[
pdu_sessions_done
].
pdusession_id
;
create_tunnel_req
.
incoming_rb_id
[
pdu_sessions_done
]
=
i
+
1
;
create_tunnel_req
.
outgoing_teid
[
pdu_sessions_done
]
=
NGAP_INITIAL_CONTEXT_SETUP_REQ
(
msg_p
).
pdusession_param
[
pdu_sessions_done
].
gtp_teid
;
// To be developped: hardcoded first flow
create_tunnel_req
.
outgoing_qfi
[
pdu_sessions_done
]
=
NGAP_INITIAL_CONTEXT_SETUP_REQ
(
msg_p
).
pdusession_param
[
pdu_sessions_done
].
qos
[
0
].
qfi
;
create_tunnel_req
.
dst_addr
[
pdu_sessions_done
].
length
=
NGAP_INITIAL_CONTEXT_SETUP_REQ
(
msg_p
).
pdusession_param
[
pdu_sessions_done
].
upf_addr
.
length
;
memcpy
(
create_tunnel_req
.
dst_addr
[
pdu_sessions_done
].
buffer
,
NGAP_INITIAL_CONTEXT_SETUP_REQ
(
msg_p
).
pdusession_param
[
pdu_sessions_done
].
upf_addr
.
buffer
,
...
...
@@ -1003,6 +1004,7 @@ rrc_gNB_process_NGAP_PDUSESSION_SETUP_REQ(
create_tunnel_req
.
pdusession_id
[
pdu_sessions_done
]
=
NGAP_PDUSESSION_SETUP_REQ
(
msg_p
).
pdusession_setup_params
[
pdu_sessions_done
].
pdusession_id
;
create_tunnel_req
.
incoming_rb_id
[
pdu_sessions_done
]
=
i
+
1
;
create_tunnel_req
.
outgoing_teid
[
pdu_sessions_done
]
=
NGAP_PDUSESSION_SETUP_REQ
(
msg_p
).
pdusession_setup_params
[
pdu_sessions_done
].
gtp_teid
;
create_tunnel_req
.
outgoing_qfi
[
pdu_sessions_done
]
=
NGAP_PDUSESSION_SETUP_REQ
(
msg_p
).
pdusession_setup_params
[
pdu_sessions_done
].
qos
[
0
].
qfi
;
memcpy
(
create_tunnel_req
.
dst_addr
[
pdu_sessions_done
].
buffer
,
NGAP_PDUSESSION_SETUP_REQ
(
msg_p
).
pdusession_setup_params
[
pdu_sessions_done
].
upf_addr
.
buffer
,
sizeof
(
uint8_t
)
*
20
);
...
...
openair3/ocp-gtpu/gtp_itf.cpp
View file @
7a6f9659
This diff is collapsed.
Click to expand it.
openair3/ocp-gtpu/gtp_itf.h
View file @
7a6f9659
...
...
@@ -66,8 +66,16 @@ int gtpv1u_create_x2u_tunnel(
// New API
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_rb_id
,
teid_t
teid
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
);
teid_t
newGtpuCreateTunnel
(
instance_t
instance
,
rnti_t
rnti
,
int
incoming_bearer_id
,
int
outgoing_rb_id
,
teid_t
teid
,
int
outgoing_qfi
,
transport_layer_addr_t
remoteAddr
,
int
port
,
gtpCallback
callBack
,
gtpCallbackSDAP
callBackSDAP
);
void
GtpuUpdateTunnelOutgoingTeid
(
instance_t
instance
,
rnti_t
rnti
,
ebi_t
bearer_id
,
teid_t
newOutgoingTeid
);
int
newGtpuDeleteAllTunnels
(
instance_t
instance
,
rnti_t
rnti
);
int
newGtpuDeleteTunnels
(
instance_t
instance
,
rnti_t
rnti
,
int
nbTunnels
,
pdusessionid_t
*
pdusession_id
);
...
...
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