forked from acouzens/open5gs
[PCF] Handle framed routes, forward them to BSF
This commit is contained in:
parent
88209f52df
commit
3e980e006f
|
@ -314,6 +314,9 @@ void pcf_sess_remove(pcf_sess_t *sess)
|
||||||
clear_ipv4addr(sess);
|
clear_ipv4addr(sess);
|
||||||
clear_ipv6prefix(sess);
|
clear_ipv6prefix(sess);
|
||||||
|
|
||||||
|
OpenAPI_clear_and_free_string_list(sess->ipv4_frame_route_list);
|
||||||
|
OpenAPI_clear_and_free_string_list(sess->ipv6_frame_route_list);
|
||||||
|
|
||||||
if (sess->subscribed_sess_ambr)
|
if (sess->subscribed_sess_ambr)
|
||||||
OpenAPI_ambr_free(sess->subscribed_sess_ambr);
|
OpenAPI_ambr_free(sess->subscribed_sess_ambr);
|
||||||
if (sess->subscribed_default_qos)
|
if (sess->subscribed_default_qos)
|
||||||
|
|
|
@ -96,6 +96,9 @@ struct pcf_sess_s {
|
||||||
char *ipv4addr_string;
|
char *ipv4addr_string;
|
||||||
char *ipv6prefix_string;
|
char *ipv6prefix_string;
|
||||||
|
|
||||||
|
OpenAPI_list_t *ipv4_frame_route_list;
|
||||||
|
OpenAPI_list_t *ipv6_frame_route_list;
|
||||||
|
|
||||||
uint32_t ipv4addr;
|
uint32_t ipv4addr;
|
||||||
struct {
|
struct {
|
||||||
uint8_t len;
|
uint8_t len;
|
||||||
|
|
|
@ -59,6 +59,9 @@ ogs_sbi_request_t *pcf_nbsf_management_build_register(
|
||||||
PcfBinding.ipv4_addr = sess->ipv4addr_string;
|
PcfBinding.ipv4_addr = sess->ipv4addr_string;
|
||||||
PcfBinding.ipv6_prefix = sess->ipv6prefix_string;
|
PcfBinding.ipv6_prefix = sess->ipv6prefix_string;
|
||||||
|
|
||||||
|
PcfBinding.ipv4_frame_route_list = sess->ipv4_frame_route_list;
|
||||||
|
PcfBinding.ipv6_frame_route_list = sess->ipv6_frame_route_list;
|
||||||
|
|
||||||
if (!sess->dnn) {
|
if (!sess->dnn) {
|
||||||
ogs_error("No DNN");
|
ogs_error("No DNN");
|
||||||
goto end;
|
goto end;
|
||||||
|
|
|
@ -296,6 +296,30 @@ bool pcf_npcf_smpolicycontrol_handle_create(pcf_sess_t *sess,
|
||||||
pcf_sess_set_ipv6prefix(
|
pcf_sess_set_ipv6prefix(
|
||||||
sess, SmPolicyContextData->ipv6_address_prefix));
|
sess, SmPolicyContextData->ipv6_address_prefix));
|
||||||
|
|
||||||
|
if (SmPolicyContextData->ipv4_frame_route_list) {
|
||||||
|
OpenAPI_lnode_t *node = NULL;
|
||||||
|
|
||||||
|
OpenAPI_clear_and_free_string_list(sess->ipv4_frame_route_list);
|
||||||
|
sess->ipv4_frame_route_list = OpenAPI_list_create();
|
||||||
|
OpenAPI_list_for_each(SmPolicyContextData->ipv4_frame_route_list, node) {
|
||||||
|
if (!node->data)
|
||||||
|
continue;
|
||||||
|
OpenAPI_list_add(sess->ipv4_frame_route_list, ogs_strdup(node->data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SmPolicyContextData->ipv6_frame_route_list) {
|
||||||
|
OpenAPI_lnode_t *node = NULL;
|
||||||
|
|
||||||
|
OpenAPI_clear_and_free_string_list(sess->ipv4_frame_route_list);
|
||||||
|
sess->ipv6_frame_route_list = OpenAPI_list_create();
|
||||||
|
OpenAPI_list_for_each(SmPolicyContextData->ipv6_frame_route_list, node) {
|
||||||
|
if (!node->data)
|
||||||
|
continue;
|
||||||
|
OpenAPI_list_add(sess->ipv6_frame_route_list, ogs_strdup(node->data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sess->s_nssai.sst = sliceInfo->sst;
|
sess->s_nssai.sst = sliceInfo->sst;
|
||||||
sess->s_nssai.sd = ogs_s_nssai_sd_from_string(sliceInfo->sd);
|
sess->s_nssai.sd = ogs_s_nssai_sd_from_string(sliceInfo->sd);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue