Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
oai-upf-6g
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
OpenXG
oai-upf-6g
Commits
2b6454b3
Commit
2b6454b3
authored
Oct 17, 2025
by
Franck Messaoudi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove: removing unused code
parent
8cffa02f
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
46 additions
and
88 deletions
+46
-88
src/oai_upf/CMakeLists.txt
src/oai_upf/CMakeLists.txt
+1
-1
src/upf_app/CMakeLists.txt
src/upf_app/CMakeLists.txt
+1
-1
src/upf_app/SessionManager.cpp
src/upf_app/SessionManager.cpp
+0
-1
src/upf_app/SessionProgramManager.cpp
src/upf_app/SessionProgramManager.cpp
+33
-42
src/upf_app/SessionProgramManager.h
src/upf_app/SessionProgramManager.h
+2
-11
src/upf_app/SessionPrograms.cpp
src/upf_app/SessionPrograms.cpp
+2
-7
src/upf_app/SessionPrograms.h
src/upf_app/SessionPrograms.h
+0
-4
src/upf_app/bpf/CMakeLists.txt
src/upf_app/bpf/CMakeLists.txt
+4
-4
src/upf_app/bpf/rules/include/next_prog_rule_key.h
src/upf_app/bpf/rules/include/next_prog_rule_key.h
+0
-13
src/upf_app/bpf/rules/include/pfcp_session_lookup_maps.h
src/upf_app/bpf/rules/include/pfcp_session_lookup_maps.h
+0
-1
src/upf_app/bpf/rules/pdr_and_far/framed_routing_bpf.h
src/upf_app/bpf/rules/pdr_and_far/framed_routing_bpf.h
+0
-0
src/upf_app/bpf/rules/pdr_and_far/pfcp_session_lookup_xdp_kernel.c
...pp/bpf/rules/pdr_and_far/pfcp_session_lookup_xdp_kernel.c
+2
-2
src/upf_app/simpleswitch/pfcp_switch.cpp
src/upf_app/simpleswitch/pfcp_switch.cpp
+1
-1
No files found.
src/oai_upf/CMakeLists.txt
View file @
2b6454b3
...
@@ -302,7 +302,7 @@ include_directories(${SRC_TOP_DIR}/pfcp)
...
@@ -302,7 +302,7 @@ include_directories(${SRC_TOP_DIR}/pfcp)
include_directories
(
${
SRC_TOP_DIR
}
/udp
)
include_directories
(
${
SRC_TOP_DIR
}
/udp
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/pdr
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/pdr
_and_far
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/app
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/app
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/interfaces
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/interfaces
)
...
...
src/upf_app/CMakeLists.txt
View file @
2b6454b3
...
@@ -25,7 +25,7 @@ include_directories(${SRC_TOP_DIR}/${MOUNTED_COMMON}/model/common_model.cmake)
...
@@ -25,7 +25,7 @@ include_directories(${SRC_TOP_DIR}/${MOUNTED_COMMON}/model/common_model.cmake)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/pdr
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/pdr
_and_far
)
##############################################################
##############################################################
# FAR #
# FAR #
...
...
src/upf_app/SessionManager.cpp
View file @
2b6454b3
...
@@ -5,7 +5,6 @@
...
@@ -5,7 +5,6 @@
#include <interfaces/SessionBpf.h>
#include <interfaces/SessionBpf.h>
#include <pfcp/pfcp_session.h>
#include <pfcp/pfcp_session.h>
#include <wrappers/BPFMaps.h>
#include <wrappers/BPFMaps.h>
#include <next_prog_rule_key.h>
#include "logger.hpp"
#include "logger.hpp"
#include "upf_config.hpp"
#include "upf_config.hpp"
...
...
src/upf_app/SessionProgramManager.cpp
View file @
2b6454b3
...
@@ -53,12 +53,12 @@ int is_little_endian() {
...
@@ -53,12 +53,12 @@ int is_little_endian() {
// strstr(buf.machine, "armv7") || strstr(buf.machine, "aarch64"));
// strstr(buf.machine, "armv7") || strstr(buf.machine, "aarch64"));
// }
// }
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
std
::
ostream
&
operator
<<
(
//
std::ostream& operator<<(
std
::
ostream
&
Str
,
struct
next_rule_prog_index_key
const
&
v
)
{
//
std::ostream& Str, struct next_rule_prog_index_key const& v) {
Str
<<
"TEID: "
<<
v
.
teid
<<
" SOURCE INTERFACE: "
<<
v
.
source_value
//
Str << "TEID: " << v.teid << " SOURCE INTERFACE: " << v.source_value
<<
"IPv4 ADDRESS: "
<<
v
.
ipv4_address
;
//
<< "IPv4 ADDRESS: " << v.ipv4_address;
return
Str
;
//
return Str;
}
//
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
SessionProgramManager
::
SessionProgramManager
()
{
SessionProgramManager
::
SessionProgramManager
()
{
...
@@ -300,21 +300,21 @@ pfcp_qer_t_ SessionProgramManager::createQer(
...
@@ -300,21 +300,21 @@ pfcp_qer_t_ SessionProgramManager::createQer(
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
// Helper function to initialize the key for the FARProgram
// Helper function to initialize the key for the FARProgram
void
SessionProgramManager
::
initializeNextRuleProgIndexKey
(
//
void SessionProgramManager::initializeNextRuleProgIndexKey(
next_rule_prog_index_key
&
key
,
uint32_t
teid
,
uint32_t
ueIpAddress
,
//
next_rule_prog_index_key& key, uint32_t teid, uint32_t ueIpAddress,
uint8_t
sourceInterface
)
{
//
uint8_t sourceInterface) {
__builtin_memset
(
&
key
,
0
,
sizeof
(
struct
next_rule_prog_index_key
));
//
__builtin_memset(&key, 0, sizeof(struct next_rule_prog_index_key));
if
(
likely
(
is_little_endian
()))
{
//
if (likely(is_little_endian())) {
key
.
teid
=
htonl
(
teid
);
//
key.teid = htonl(teid);
key
.
ipv4_address
=
htonl
(
ueIpAddress
);
//
key.ipv4_address = htonl(ueIpAddress);
}
else
{
//
} else {
key
.
teid
=
teid
;
//
key.teid = teid;
key
.
ipv4_address
=
ueIpAddress
;
//
key.ipv4_address = ueIpAddress;
}
//
}
key
.
source_value
=
sourceInterface
;
//
key.source_value = sourceInterface;
}
//
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
// Helper function to store Session mapping
// Helper function to store Session mapping
...
@@ -440,17 +440,17 @@ void SessionProgramManager::updateARPTableForN3(
...
@@ -440,17 +440,17 @@ void SessionProgramManager::updateARPTableForN3(
}
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
// Helper function to save SEID with FAR program
//
//
Helper function to save SEID with FAR program
void
SessionProgramManager
::
saveSeidWithinFARProgram
(
//
void SessionProgramManager::saveSeidWithinFARProgram(
uint64_t
seid
,
//
uint64_t seid,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
,
//
std::shared_ptr<PFCP_Session_LookupProgram> pPFCP_Session_LookupProgram,
const
next_rule_prog_index_key
&
key
)
{
//
const next_rule_prog_index_key& key) {
// Map the deployed pipeline to the seid.
//
// Map the deployed pipeline to the seid.
// The seid will be used to destroy the pipeline.
//
// The seid will be used to destroy the pipeline.
mSessionProgramsMap
[
seid
]
=
//
mSessionProgramsMap[seid] =
std
::
make_shared
<
SessionPrograms
>
(
key
,
pPFCP_Session_LookupProgram
);
//
std::make_shared<SessionPrograms>(key, pPFCP_Session_LookupProgram);
addPFCPProgram
(
seid
,
pPFCP_Session_LookupProgram
);
//
addPFCPProgram(seid, pPFCP_Session_LookupProgram);
}
//
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
uint32_t
SessionProgramManager
::
getGnodebIp
(
uint32_t
SessionProgramManager
::
getGnodebIp
(
...
@@ -555,7 +555,7 @@ void SessionProgramManager::createPipeline(
...
@@ -555,7 +555,7 @@ void SessionProgramManager::createPipeline(
pfcp
::
source_interface_t
sourceInterface
;
pfcp
::
source_interface_t
sourceInterface
;
uint16_t
pdr_id
;
uint16_t
pdr_id
;
uint32_t
far_id
;
uint32_t
far_id
;
next_rule_prog_index_key
key
;
//
next_rule_prog_index_key key;
session_id
pduSession
;
session_id
pduSession
;
uint64_t
seid
=
session
->
get_up_seid
();
uint64_t
seid
=
session
->
get_up_seid
();
...
@@ -870,16 +870,7 @@ void SessionProgramManager::removePipeline(uint64_t seid) {
...
@@ -870,16 +870,7 @@ void SessionProgramManager::removePipeline(uint64_t seid) {
Logger
::
upf_app
().
debug
(
Logger
::
upf_app
().
debug
(
"Delete the SessionPrograms object. It will release the pipeline"
);
"Delete the SessionPrograms object. It will release the pipeline"
);
auto
key
=
it
->
second
->
getKey
();
// it->second.reset();
// mSessionProgramsMap.erase(seid);
Logger
::
upf_app
().
debug
(
"Clean PDU Session from the entry program's map"
);
Logger
::
upf_app
().
debug
(
"Clean PDU Session from the entry program's map"
);
// auto pPFCP_Session_LookupProgram =
// UserPlaneComponent::getInstance().getPFCP_Session_LookupProgram();
// pPFCP_Session_LookupProgram->getNextProgRuleIndexMap()->remove(key);
}
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
...
...
src/upf_app/SessionProgramManager.h
View file @
2b6454b3
...
@@ -11,7 +11,6 @@
...
@@ -11,7 +11,6 @@
#include <pfcp/pfcp_far.h>
#include <pfcp/pfcp_far.h>
#include <pfcp/pfcp_pdr.h>
#include <pfcp/pfcp_pdr.h>
#include <pfcp/pfcp_qer.h>
#include <pfcp/pfcp_qer.h>
#include <next_prog_rule_key.h>
#include <session_id.h>
#include <session_id.h>
#include <netinet/ether.h>
#include <netinet/ether.h>
...
@@ -67,9 +66,7 @@ class SessionProgramManager {
...
@@ -67,9 +66,7 @@ class SessionProgramManager {
std
::
vector
<
std
::
shared_ptr
<
pfcp
::
pfcp_qer
>>
pQer
,
std
::
vector
<
std
::
shared_ptr
<
pfcp
::
pfcp_qer
>>
pQer
,
std
::
vector
<
std
::
shared_ptr
<
pfcp
::
pfcp_pdr
>>
pdrs
,
std
::
vector
<
std
::
shared_ptr
<
pfcp
::
pfcp_pdr
>>
pdrs
,
bool
isModification
=
false
,
uint32_t
teid2
=
0
);
bool
isModification
=
false
,
uint32_t
teid2
=
0
);
void
initializeNextRuleProgIndexKey
(
next_rule_prog_index_key
&
key
,
uint32_t
teid
,
uint32_t
ueIpAddress
,
uint8_t
sourceInterface
);
void
addPFCPProgram
(
void
addPFCPProgram
(
uint64_t
seid
,
uint64_t
seid
,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
);
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
);
...
@@ -77,13 +74,7 @@ class SessionProgramManager {
...
@@ -77,13 +74,7 @@ class SessionProgramManager {
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
,
uint32_t
ue_ip_address
,
uint32_t
teid_dl
,
uint32_t
teid_ul
,
uint32_t
ue_ip_address
,
uint32_t
teid_dl
,
uint32_t
teid_ul
,
uint64_t
seid
);
uint64_t
seid
);
void
storeFARInFARMap
(
std
::
shared_ptr
<
FARProgram
>
pFARProgram
,
std
::
shared_ptr
<
pfcp
::
pfcp_far
>
pFar
);
void
saveSeidWithinFARProgram
(
uint64_t
seid
,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
,
const
next_rule_prog_index_key
&
key
);
void
updateARPTableForN6
(
void
updateARPTableForN6
(
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
,
uint32_t
dnIP
,
uint32_t
upfn6IP
);
uint32_t
dnIP
,
uint32_t
upfn6IP
);
...
...
src/upf_app/SessionPrograms.cpp
View file @
2b6454b3
...
@@ -2,20 +2,15 @@
...
@@ -2,20 +2,15 @@
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
SessionPrograms
::
SessionPrograms
(
SessionPrograms
::
SessionPrograms
(
struct
next_rule_prog_index_key
key
,
//
struct next_rule_prog_index_key key,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
)
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
)
:
m
Key
(
key
),
m
pPFCP_Session_LookupProgram
(
pPFCP_Session_LookupProgram
)
{}
:
mpPFCP_Session_LookupProgram
(
pPFCP_Session_LookupProgram
)
{}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
SessionPrograms
::~
SessionPrograms
()
{
SessionPrograms
::~
SessionPrograms
()
{
mpPFCP_Session_LookupProgram
->
tearDown
();
mpPFCP_Session_LookupProgram
->
tearDown
();
}
}
//---------------------------------------------------------------------------------------------------------------
struct
next_rule_prog_index_key
SessionPrograms
::
getKey
()
const
{
return
mKey
;
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
SessionPrograms
::
getPFCPProgram
()
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
SessionPrograms
::
getPFCPProgram
()
const
{
const
{
...
...
src/upf_app/SessionPrograms.h
View file @
2b6454b3
...
@@ -4,7 +4,6 @@
...
@@ -4,7 +4,6 @@
#include <memory>
#include <memory>
#include <pfcp_session_lookup_xdp_user.h>
#include <pfcp_session_lookup_xdp_user.h>
#include <unistd.h>
#include <unistd.h>
#include <next_prog_rule_key.h>
/**
/**
* @brief This class represents the Data-Path path. It stores the program
* @brief This class represents the Data-Path path. It stores the program
...
@@ -15,15 +14,12 @@
...
@@ -15,15 +14,12 @@
class
SessionPrograms
{
class
SessionPrograms
{
public:
public:
SessionPrograms
(
SessionPrograms
(
struct
next_rule_prog_index_key
key
,
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
);
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
pPFCP_Session_LookupProgram
);
virtual
~
SessionPrograms
();
virtual
~
SessionPrograms
();
struct
next_rule_prog_index_key
getKey
()
const
;
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
getPFCPProgram
()
const
;
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
getPFCPProgram
()
const
;
private:
private:
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
mpPFCP_Session_LookupProgram
;
std
::
shared_ptr
<
PFCP_Session_LookupProgram
>
mpPFCP_Session_LookupProgram
;
struct
next_rule_prog_index_key
mKey
;
};
};
#endif // __SESSIONPROGRAMS_H__
#endif // __SESSIONPROGRAMS_H__
src/upf_app/bpf/CMakeLists.txt
View file @
2b6454b3
...
@@ -3,7 +3,7 @@ include_directories(${SRC_TOP_DIR}/upf_app)
...
@@ -3,7 +3,7 @@ include_directories(${SRC_TOP_DIR}/upf_app)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/pdr
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/pdr
_and_far
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/far
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/far
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/qer
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/bpf/rules/qer
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/include
)
include_directories
(
${
SRC_TOP_DIR
}
/upf_app/include
)
...
@@ -22,9 +22,9 @@ add_custom_target(upf_xdp_all DEPENDS pfcp_session_lookup_xdp)
...
@@ -22,9 +22,9 @@ add_custom_target(upf_xdp_all DEPENDS pfcp_session_lookup_xdp)
###########################################################################
###########################################################################
function
(
xdp arg
)
function
(
xdp arg
)
if
(
${
arg
}
STREQUAL
"pfcp_session_lookup"
)
if
(
${
arg
}
STREQUAL
"pfcp_session_lookup"
)
set
(
source_dir
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/rules/pdr"
)
set
(
source_dir
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/rules/pdr
_and_far
"
)
elseif
(
${
arg
}
STREQUAL
"far"
)
#
elseif (${arg} STREQUAL "far")
set
(
source_dir
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/rules/far"
)
#
set(source_dir "${CMAKE_CURRENT_SOURCE_DIR}/rules/far")
else
()
else
()
message
(
FATAL_ERROR
"Invalid arg:
${
arg
}
"
)
message
(
FATAL_ERROR
"Invalid arg:
${
arg
}
"
)
endif
()
endif
()
...
...
src/upf_app/bpf/rules/include/next_prog_rule_key.h
deleted
100644 → 0
View file @
8cffa02f
#ifndef __NEXT_PROG_RULE_KEY_H__
#define __NEXT_PROG_RULE_KEY_H__
#include <ie/teid.h>
#include <types.h>
struct
next_rule_prog_index_key
{
teid_t_
teid
;
u8
source_value
;
u32
ipv4_address
;
};
#endif // __NEXT_PROG_RULE_KEY_H__
src/upf_app/bpf/rules/include/pfcp_session_lookup_maps.h
View file @
2b6454b3
...
@@ -8,7 +8,6 @@
...
@@ -8,7 +8,6 @@
#include <linux/bpf.h>
#include <linux/bpf.h>
#include <stdint.h>
#include <stdint.h>
#include <ie/teid.h>
#include <ie/teid.h>
#include <next_prog_rule_key.h>
#include <rules_matching_pdr.h>
#include <rules_matching_pdr.h>
#include "interfaces.h"
#include "interfaces.h"
#include "session_id.h"
#include "session_id.h"
...
...
src/upf_app/bpf/rules/pdr/framed_routing_bpf.h
→
src/upf_app/bpf/rules/pdr
_and_far
/framed_routing_bpf.h
View file @
2b6454b3
File moved
src/upf_app/bpf/rules/pdr/pfcp_session_lookup_xdp_kernel.c
→
src/upf_app/bpf/rules/pdr
_and_far
/pfcp_session_lookup_xdp_kernel.c
View file @
2b6454b3
...
@@ -25,8 +25,8 @@
...
@@ -25,8 +25,8 @@
#include <utils/logger.h>
#include <utils/logger.h>
#include <utils/utils.h>
#include <utils/utils.h>
#include <next_prog_rule_key.h>
//
#include <next_prog_rule_key.h>
#include
<framed_routing_bpf.h>
#include
"framed_routing_bpf.h"
#include "xdp_stats_kern.h"
#include "xdp_stats_kern.h"
#include <linux/bpf.h>
#include <linux/bpf.h>
...
...
src/upf_app/simpleswitch/pfcp_switch.cpp
View file @
2b6454b3
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
#include "upf_config.hpp"
#include "upf_config.hpp"
#include "upf_pfcp_association.hpp"
#include "upf_pfcp_association.hpp"
#include "simple_switch.hpp"
#include "simple_switch.hpp"
#include "../bpf/rules/pdr/framed_routing_bpf.h"
#include "../bpf/rules/pdr
_and_far
/framed_routing_bpf.h"
#include <algorithm>
#include <algorithm>
#include <fstream> // std::ifstream
#include <fstream> // std::ifstream
...
...
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