[PFCP] Support PFCP advertise address in F-SEID

This commit is contained in:
mitmitmitm 2023-05-23 11:18:04 +02:00 committed by Sukchan Lee
parent cd485944cb
commit 928a80ef26
6 changed files with 10 additions and 18 deletions

View File

@ -152,11 +152,13 @@ int ogs_pfcp_f_seid_to_sockaddr(
return OGS_OK;
}
int ogs_pfcp_sockaddr_to_f_seid(
ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
ogs_pfcp_f_seid_t *f_seid, int *len)
int ogs_pfcp_sockaddr_to_f_seid(ogs_pfcp_f_seid_t *f_seid, int *len)
{
const int hdr_len = 9;
ogs_sockaddr_t *advertise = ogs_pfcp_self()->pfcp_advertise;
ogs_sockaddr_t *advertise6 = ogs_pfcp_self()->pfcp_advertise6;
ogs_sockaddr_t *addr = advertise ? advertise : ogs_pfcp_self()->pfcp_addr;
ogs_sockaddr_t *addr6 = advertise6 ? advertise6 : ogs_pfcp_self()->pfcp_addr6;
ogs_assert(f_seid);

View File

@ -32,9 +32,7 @@ int ogs_pfcp_sockaddr_to_node_id(ogs_pfcp_node_id_t *node_id, int *len);
int ogs_pfcp_f_seid_to_sockaddr(
ogs_pfcp_f_seid_t *f_seid, uint16_t port, ogs_sockaddr_t **list);
int ogs_pfcp_sockaddr_to_f_seid(
ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
ogs_pfcp_f_seid_t *f_seid, int *len);
int ogs_pfcp_sockaddr_to_f_seid(ogs_pfcp_f_seid_t *f_seid, int *len);
int ogs_pfcp_f_seid_to_ip(ogs_pfcp_f_seid_t *f_seid, ogs_ip_t *ip);
int ogs_pfcp_sockaddr_to_f_teid(

View File

@ -59,9 +59,7 @@ ogs_pkbuf_t *sgwc_sxa_build_session_establishment_request(
req->node_id.len = len;
/* F-SEID */
rv = ogs_pfcp_sockaddr_to_f_seid(
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
&f_seid, &len);
rv = ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
if (rv != OGS_OK) {
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
ogs_free(pfcp_message);

View File

@ -58,9 +58,7 @@ ogs_pkbuf_t *sgwu_sxa_build_session_establishment_response(uint8_t type,
rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
/* F-SEID */
rv = ogs_pfcp_sockaddr_to_f_seid(
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
&f_seid, &len);
rv = ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
if (rv != OGS_OK) {
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
ogs_free(pfcp_message);

View File

@ -68,9 +68,7 @@ ogs_pkbuf_t *smf_n4_build_session_establishment_request(
req->node_id.len = len;
/* F-SEID */
rv = ogs_pfcp_sockaddr_to_f_seid(
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
&f_seid, &len);
rv = ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
if (rv != OGS_OK) {
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
ogs_free(pfcp_message);

View File

@ -54,9 +54,7 @@ ogs_pkbuf_t *upf_n4_build_session_establishment_response(uint8_t type,
rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
/* F-SEID */
ogs_pfcp_sockaddr_to_f_seid(
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
&f_seid, &len);
ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
f_seid.seid = htobe64(sess->upf_n4_seid);
rsp->up_f_seid.presence = 1;
rsp->up_f_seid.data = &f_seid;