Rename and move ogs_gtp2_paa_to_ip() to lib/proto/conv

Both types are defined under lib/proto/type.h, and the conversion
function is used in several different protocols, so let's better move it
to generic lib/proto/conv.h and remove the "gtp2" prefix.
This commit is contained in:
Pau Espin 2024-01-05 20:16:29 +01:00 committed by Sukchan Lee
parent b3845d5b0b
commit 4ab275ad70
7 changed files with 34 additions and 33 deletions

View File

@ -153,31 +153,3 @@ int ogs_gtp2_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp2_f_teid_t *f_teid, int *len)
return OGS_OK;
}
int ogs_gtp2_paa_to_ip(ogs_paa_t *paa, ogs_ip_t *ip)
{
ogs_assert(paa);
ogs_assert(ip);
memset(ip, 0, sizeof *ip);
if (paa->session_type == OGS_PDU_SESSION_TYPE_IPV4V6) {
ip->ipv4 = 1;
ip->addr = paa->both.addr;
ip->ipv6 = 1;
memcpy(ip->addr6, paa->both.addr6, OGS_IPV6_LEN);
} else if (paa->session_type == OGS_PDU_SESSION_TYPE_IPV4) {
ip->ipv4 = 1;
ip->ipv6 = 0;
ip->addr = paa->addr;
} else if (paa->session_type == OGS_PDU_SESSION_TYPE_IPV6) {
ip->ipv4 = 0;
ip->ipv6 = 1;
memcpy(ip->addr6, paa->addr6, OGS_IPV6_LEN);
} else {
ogs_error("No IPv4 or IPv6");
return OGS_ERROR;
}
return OGS_OK;
}

View File

@ -35,8 +35,6 @@ int ogs_gtp2_sockaddr_to_f_teid(ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
int ogs_gtp2_f_teid_to_ip(ogs_gtp2_f_teid_t *f_teid, ogs_ip_t *ip);
int ogs_gtp2_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp2_f_teid_t *f_teid, int *len);
int ogs_gtp2_paa_to_ip(ogs_paa_t *paa, ogs_ip_t *ip);
#ifdef __cplusplus
}
#endif

View File

@ -40,3 +40,32 @@ void ogs_extract_digit_from_string(char *digit, char *string)
*digit = 0;
}
int ogs_paa_to_ip(const ogs_paa_t *paa, ogs_ip_t *ip)
{
ogs_assert(paa);
ogs_assert(ip);
memset(ip, 0, sizeof *ip);
if (paa->session_type == OGS_PDU_SESSION_TYPE_IPV4V6) {
ip->ipv4 = 1;
ip->addr = paa->both.addr;
ip->ipv6 = 1;
memcpy(ip->addr6, paa->both.addr6, OGS_IPV6_LEN);
} else if (paa->session_type == OGS_PDU_SESSION_TYPE_IPV4) {
ip->ipv4 = 1;
ip->ipv6 = 0;
ip->addr = paa->addr;
} else if (paa->session_type == OGS_PDU_SESSION_TYPE_IPV6) {
ip->ipv4 = 0;
ip->ipv6 = 1;
memcpy(ip->addr6, paa->addr6, OGS_IPV6_LEN);
} else {
ogs_error("No IPv4 or IPv6");
return OGS_ERROR;
}
return OGS_OK;
}

View File

@ -30,6 +30,8 @@ extern "C" {
void ogs_extract_digit_from_string(char *digit, char *string);
int ogs_paa_to_ip(const ogs_paa_t *paa, ogs_ip_t *ip);
#ifdef __cplusplus
}
#endif

View File

@ -376,7 +376,7 @@ void mme_s11_handle_create_session_response(
rsp->pdn_address_allocation.len);
session->session_type = session->paa.session_type;
ogs_assert(OGS_OK ==
ogs_gtp2_paa_to_ip(&session->paa, &session->ue_ip));
ogs_paa_to_ip(&session->paa, &session->ue_ip));
}
/* ePCO */

View File

@ -174,7 +174,7 @@ ogs_pkbuf_t *smf_gn_build_create_pdp_context_response(
rsp->charging_id.u32 = sess->charging.id;
/* End User Address */
rv = ogs_gtp2_paa_to_ip(&sess->session.paa, &ip_eua);
rv = ogs_paa_to_ip(&sess->session.paa, &ip_eua);
rv = ogs_gtp1_ip_to_eua(sess->session.session_type, &ip_eua, &eua,
&eua_len);
rsp->end_user_address.presence = 1;

View File

@ -247,7 +247,7 @@ uint8_t smf_s5c_handle_create_session_request(
/* Initially Set Session Type from UE */
sess->session.session_type = sess->ue_session_type;
rv = ogs_gtp2_paa_to_ip(paa, &sess->session.ue_ip);
rv = ogs_paa_to_ip(paa, &sess->session.ue_ip);
ogs_assert(rv == OGS_OK);
/* Set UE IP Address */