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
d804b703
Commit
d804b703
authored
Nov 04, 2022
by
Stefan Spettel
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/cu_du_testing' into ulcl_release16_testing
parents
c18a6bfc
2be197aa
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
52 deletions
+53
-52
src/common/smf.h
src/common/smf.h
+4
-3
src/smf_app/smf_context.cpp
src/smf_app/smf_context.cpp
+3
-3
src/smf_app/smf_n2.cpp
src/smf_app/smf_n2.cpp
+1
-1
src/smf_app/smf_pco.cpp
src/smf_app/smf_pco.cpp
+45
-45
No files found.
src/common/smf.h
View file @
d804b703
...
...
@@ -212,8 +212,8 @@ enum class sm_context_status_e {
SM_CONTEXT_STATUS_RELEASED
=
1
};
static
const
std
::
vector
<
std
::
string
>
sm_context_status_e2str
=
{
"ACTIVE"
,
"RELEASED"
};
static
const
std
::
vector
<
std
::
string
>
sm_context_status_e2str
=
{
"ACTIVE"
,
"RELEASED"
};
typedef
struct
qos_profile_gbr_s
{
gfbr_t
gfbr
;
// Guaranteed Flow Bit Rate
...
...
@@ -277,7 +277,8 @@ constexpr uint64_t SECONDS_SINCE_FIRST_EPOCH = 2208988800;
// 8.22 Fully Qualified TEID (F-TEID) - 3GPP TS 29.274 V16.0.0
#define TEID_GRE_KEY_LENGTH 4
#define DEFAULT_QFI 6
#define DEFAULT_QFI 1
#define DEFAULT_5QI 9 // TODO: from conf file
typedef
struct
dnn_smf_info_item_s
{
std
::
string
dnn
;
...
...
src/smf_app/smf_context.cpp
View file @
d804b703
...
...
@@ -1126,14 +1126,14 @@ void smf_context::get_default_qos_rule(
(
Create_ModifyAndAdd_ModifyAndReplace
*
)
calloc
(
1
,
sizeof
(
Create_ModifyAndAdd_ModifyAndReplace
));
qos_rule
.
packetfilterlist
.
create_modifyandadd_modifyandreplace
[
0
]
.
packetfilterdirection
=
0b1
1
;
// bi-directional
.
packetfilterdirection
=
0b1
0
;
// TODO: Uplink only!
qos_rule
.
packetfilterlist
.
create_modifyandadd_modifyandreplace
[
0
]
.
packetfilteridentifier
=
1
;
qos_rule
.
packetfilterlist
.
create_modifyandadd_modifyandreplace
[
0
]
.
packetfiltercontents
.
component_type
=
QOS_RULE_MATCHALL_TYPE
;
// qos_rule.packetfilterlist.create_modifyandadd_modifyandreplace[0].packetfiltercontents.component_value
// = bfromcstralloc(2, "\0");
qos_rule
.
qosruleprecedence
=
0x
ff
;
qos_rule
.
qosruleprecedence
=
0x
01
;
}
if
(
pdu_session_type
==
PDU_SESSION_TYPE_E_UNSTRUCTURED
)
{
...
...
@@ -1174,7 +1174,7 @@ void smf_context::get_default_qos_flow_description(
(
ParametersList
*
)
calloc
(
3
,
sizeof
(
ParametersList
));
qos_flow_description
.
parameterslist
[
0
].
parameteridentifier
=
PARAMETER_IDENTIFIER_5QI
;
qos_flow_description
.
parameterslist
[
0
].
parametercontents
.
_5qi
=
qfi
.
qfi
;
qos_flow_description
.
parameterslist
[
0
].
parametercontents
.
_5qi
=
DEFAULT_5QI
;
/*
qos_flow_description.parameterslist[1].parameteridentifier =
PARAMETER_IDENTIFIER_GFBR_UPLINK;
...
...
src/smf_app/smf_n2.cpp
View file @
d804b703
...
...
@@ -231,7 +231,7 @@ bool smf_n2::create_n2_pdu_session_resource_setup_request_transfer(
.
choice
.
nonDynamic5QI
=
(
Ngap_NonDynamic5QIDescriptor_t
*
)
(
calloc
(
1
,
sizeof
(
Ngap_NonDynamic5QIDescriptor_t
)));
ngap_QosFlowSetupRequestItem
->
qosFlowLevelQosParameters
.
qosCharacteristics
.
choice
.
nonDynamic5QI
->
fiveQI
=
(
uint8_t
)
qos_flow
.
qfi
.
qfi
;
.
choice
.
nonDynamic5QI
->
fiveQI
=
(
uint8_t
)
DEFAULT_5QI
;
ngap_QosFlowSetupRequestItem
->
qosFlowLevelQosParameters
.
allocationAndRetentionPriority
.
priorityLevelARP
=
qos_flow
.
qos_profile
.
arp
.
priority_level
;
...
...
src/smf_app/smf_pco.cpp
View file @
d804b703
...
...
@@ -197,51 +197,51 @@ int smf_app::process_pco_request_ipcp(
* returning the IP address of a valid DNS server.
* By default, no secondary DNS address is provided.
*/
Logger
::
smf_app
().
debug
(
"PCO: Protocol identifier IPCP option "
"SECONDARY_DNS_SERVER_IP_ADDRESS length %u"
,
ipcp_req_option_length
);
if
(
ipcp_req_option_length
>=
6
)
{
ipcp_dns_sec_ipv4_addr
=
htonl
(
(((
uint32_t
)
poc_id
->
protocol_id_contents
.
at
(
pco_in_index
+
2
))
<<
24
)
|
(((
uint32_t
)
poc_id
->
protocol_id_contents
.
at
(
pco_in_index
+
3
))
<<
16
)
|
(((
uint32_t
)
poc_id
->
protocol_id_contents
.
at
(
pco_in_index
+
4
))
<<
8
)
|
(((
uint32_t
)
poc_id
->
protocol_id_contents
.
at
(
pco_in_index
+
5
))));
Logger
::
smf_app
().
debug
(
"PCO: Protocol identifier IPCP option "
"SECONDARY_DNS_SERVER_IP_ADDRESS ipcp_dns_sec_ipv4_addr 0x%x"
,
ipcp_dns_sec_ipv4_addr
);
if
(
ipcp_dns_sec_ipv4_addr
==
INADDR_ANY
)
{
ipcp_out_dns_sec_ipv4_addr
=
smf_cfg
.
default_dns_secv4
.
s_addr
;
ipcp_out_code
=
IPCP_CODE_CONFIGURE_NACK
;
}
else
if
(
smf_cfg
.
default_dns_secv4
.
s_addr
!=
ipcp_dns_sec_ipv4_addr
)
{
ipcp_out_code
=
IPCP_CODE_CONFIGURE_NACK
;
ipcp_out_dns_sec_ipv4_addr
=
smf_cfg
.
default_dns_secv4
.
s_addr
;
}
else
{
ipcp_out_dns_sec_ipv4_addr
=
ipcp_dns_sec_ipv4_addr
;
}
Logger
::
smf_app
().
debug
(
"PCO: Protocol identifier IPCP option "
"SECONDARY_DNS_SERVER_IP_ADDRESS ipcp_out_dns_sec_ipv4_addr 0x%x"
,
ipcp_out_dns_sec_ipv4_addr
);
}
uint8_t
ids
[
6
]
=
{
0
}
;
ids
[
0
]
=
IPCP_OPTION_SECONDARY_DNS_SERVER_IP_ADDRESS
;
ids
[
1
]
=
6
;
ids
[
2
]
=
(
uint8_t
)(
ipcp_out_dns_sec_ipv4_addr
&
0x000000FF
);
ids
[
3
]
=
(
uint8_t
)((
ipcp_out_dns_sec_ipv4_addr
>>
8
)
&
0x000000FF
);
ids
[
4
]
=
(
uint8_t
)((
ipcp_out_dns_sec_ipv4_addr
>>
16
)
&
0x000000FF
);
ids
[
5
]
=
(
uint8_t
)((
ipcp_out_dns_sec_ipv4_addr
>>
24
)
&
0x000000FF
)
;
ipcp_out_length
+=
6
;
std
::
string
tmp_s
((
const
char
*
)
&
ids
[
0
],
6
);
poc_id_resp
.
protocol_id_contents
.
append
(
tmp_s
);
/*
Logger::smf_app().debug(
"PCO: Protocol identifier IPCP option "
"SECONDARY_DNS_SERVER_IP_ADDRESS length %u",
ipcp_req_option_length);
if (ipcp_req_option_length >= 6) {
ipcp_dns_sec_ipv4_addr = htonl(
(((uint32_t) poc_id->protocol_id_contents.at(pco_in_index + 2))
<< 24) |
(((uint32_t) poc_id->protocol_id_contents.at(pco_in_index + 3))
<< 16) |
(((uint32_t) poc_id->protocol_id_contents.at(pco_in_index + 4))
<< 8) |
(((uint32_t) poc_id->protocol_id_contents.at(pco_in_index +
5)))); Logger::smf_app().debug( "PCO: Protocol identifier IPCP option "
"SECONDARY_DNS_SERVER_IP_ADDRESS ipcp_dns_sec_ipv4_addr 0x%x",
ipcp_dns_sec_ipv4_addr);
if (ipcp_dns_sec_ipv4_addr == INADDR_ANY) {
ipcp_out_dns_sec_ipv4_addr = smf_cfg.default_dns_secv4.s_addr;
ipcp_out_code = IPCP_CODE_CONFIGURE_NACK
;
} else if (
smf_cfg.default_dns_secv4.s_addr != ipcp_dns_sec_ipv4_addr) {
ipcp_out_code = IPCP_CODE_CONFIGURE_NACK;
ipcp_out_dns_sec_ipv4_addr = smf_cfg.default_dns_secv4.s_addr
;
} else {
ipcp_out_dns_sec_ipv4_addr = ipcp_dns_sec_ipv4_addr;
}
Logger::smf_app().debug(
"PCO: Protocol identifier IPCP option "
"SECONDARY_DNS_SERVER_IP_ADDRESS ipcp_out_dns_sec_ipv4_addr
0x%x", ipcp_out_dns_sec_ipv4_addr);
}
uint8_t ids[6] = {0};
ids[0] = IPCP_OPTION_SECONDARY_DNS_SERVER_IP_ADDRESS
;
ids[1] = 6
;
ids[2] = (uint8_t)(ipcp_out_dns_sec_ipv4_addr & 0x000000FF)
;
ids[3] = (uint8_t)((ipcp_out_dns_sec_ipv4_addr >> 8)
& 0x000000FF);
ids[4] = (uint8_t)((ipcp_out_dns_sec_ipv4_addr >> 16
) & 0x000000FF);
ids[5] = (uint8_t)((ipcp_out_dns_sec_ipv4_addr >> 24
) & 0x000000FF);
ipcp_out_length += 6
;
std::string tmp_s((const char*) &ids[0], 6)
;
poc_id_resp.protocol_id_contents.append(tmp_s
);
*/
}
break
;
default:
...
...
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