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_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)
|
||||
OpenAPI_ambr_free(sess->subscribed_sess_ambr);
|
||||
if (sess->subscribed_default_qos)
|
||||
|
|
|
@ -96,6 +96,9 @@ struct pcf_sess_s {
|
|||
char *ipv4addr_string;
|
||||
char *ipv6prefix_string;
|
||||
|
||||
OpenAPI_list_t *ipv4_frame_route_list;
|
||||
OpenAPI_list_t *ipv6_frame_route_list;
|
||||
|
||||
uint32_t ipv4addr;
|
||||
struct {
|
||||
uint8_t len;
|
||||
|
|
|
@ -59,6 +59,9 @@ ogs_sbi_request_t *pcf_nbsf_management_build_register(
|
|||
PcfBinding.ipv4_addr = sess->ipv4addr_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) {
|
||||
ogs_error("No DNN");
|
||||
goto end;
|
||||
|
|
|
@ -296,6 +296,30 @@ bool pcf_npcf_smpolicycontrol_handle_create(pcf_sess_t *sess,
|
|||
pcf_sess_set_ipv6prefix(
|
||||
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.sd = ogs_s_nssai_sd_from_string(sliceInfo->sd);
|
||||
|
||||
|
|
Loading…
Reference in New Issue