forked from acouzens/open5gs
[PFCP] Support PFCP advertise address in F-SEID
This commit is contained in:
parent
cd485944cb
commit
928a80ef26
|
@ -152,11 +152,13 @@ int ogs_pfcp_f_seid_to_sockaddr(
|
||||||
return OGS_OK;
|
return OGS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ogs_pfcp_sockaddr_to_f_seid(
|
int ogs_pfcp_sockaddr_to_f_seid(ogs_pfcp_f_seid_t *f_seid, int *len)
|
||||||
ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
|
|
||||||
ogs_pfcp_f_seid_t *f_seid, int *len)
|
|
||||||
{
|
{
|
||||||
const int hdr_len = 9;
|
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);
|
ogs_assert(f_seid);
|
||||||
|
|
||||||
|
|
|
@ -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(
|
int ogs_pfcp_f_seid_to_sockaddr(
|
||||||
ogs_pfcp_f_seid_t *f_seid, uint16_t port, ogs_sockaddr_t **list);
|
ogs_pfcp_f_seid_t *f_seid, uint16_t port, ogs_sockaddr_t **list);
|
||||||
int ogs_pfcp_sockaddr_to_f_seid(
|
int ogs_pfcp_sockaddr_to_f_seid(ogs_pfcp_f_seid_t *f_seid, int *len);
|
||||||
ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
|
|
||||||
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_f_seid_to_ip(ogs_pfcp_f_seid_t *f_seid, ogs_ip_t *ip);
|
||||||
|
|
||||||
int ogs_pfcp_sockaddr_to_f_teid(
|
int ogs_pfcp_sockaddr_to_f_teid(
|
||||||
|
|
|
@ -59,9 +59,7 @@ ogs_pkbuf_t *sgwc_sxa_build_session_establishment_request(
|
||||||
req->node_id.len = len;
|
req->node_id.len = len;
|
||||||
|
|
||||||
/* F-SEID */
|
/* F-SEID */
|
||||||
rv = ogs_pfcp_sockaddr_to_f_seid(
|
rv = ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
|
||||||
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
|
|
||||||
&f_seid, &len);
|
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
|
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
|
||||||
ogs_free(pfcp_message);
|
ogs_free(pfcp_message);
|
||||||
|
|
|
@ -58,9 +58,7 @@ ogs_pkbuf_t *sgwu_sxa_build_session_establishment_response(uint8_t type,
|
||||||
rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
|
rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
|
||||||
|
|
||||||
/* F-SEID */
|
/* F-SEID */
|
||||||
rv = ogs_pfcp_sockaddr_to_f_seid(
|
rv = ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
|
||||||
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
|
|
||||||
&f_seid, &len);
|
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
|
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
|
||||||
ogs_free(pfcp_message);
|
ogs_free(pfcp_message);
|
||||||
|
|
|
@ -68,9 +68,7 @@ ogs_pkbuf_t *smf_n4_build_session_establishment_request(
|
||||||
req->node_id.len = len;
|
req->node_id.len = len;
|
||||||
|
|
||||||
/* F-SEID */
|
/* F-SEID */
|
||||||
rv = ogs_pfcp_sockaddr_to_f_seid(
|
rv = ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
|
||||||
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
|
|
||||||
&f_seid, &len);
|
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
|
ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
|
||||||
ogs_free(pfcp_message);
|
ogs_free(pfcp_message);
|
||||||
|
|
|
@ -54,9 +54,7 @@ ogs_pkbuf_t *upf_n4_build_session_establishment_response(uint8_t type,
|
||||||
rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
|
rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
|
||||||
|
|
||||||
/* F-SEID */
|
/* F-SEID */
|
||||||
ogs_pfcp_sockaddr_to_f_seid(
|
ogs_pfcp_sockaddr_to_f_seid(&f_seid, &len);
|
||||||
ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
|
|
||||||
&f_seid, &len);
|
|
||||||
f_seid.seid = htobe64(sess->upf_n4_seid);
|
f_seid.seid = htobe64(sess->upf_n4_seid);
|
||||||
rsp->up_f_seid.presence = 1;
|
rsp->up_f_seid.presence = 1;
|
||||||
rsp->up_f_seid.data = &f_seid;
|
rsp->up_f_seid.data = &f_seid;
|
||||||
|
|
Loading…
Reference in New Issue