forked from acouzens/open5gs
[PFCP] Add more error log (#1012)
This commit is contained in:
parent
ef07ccfb88
commit
80a9497afd
|
@ -180,8 +180,8 @@ int ogs_pfcp_sockaddr_to_f_teid(
|
|||
{
|
||||
const int hdr_len = 5;
|
||||
|
||||
ogs_assert(addr || addr6);
|
||||
ogs_assert(f_teid);
|
||||
ogs_expect_or_return_val(addr || addr6, OGS_ERROR);
|
||||
ogs_expect_or_return_val(f_teid, OGS_ERROR);
|
||||
memset(f_teid, 0, sizeof *f_teid);
|
||||
|
||||
if (addr && addr6) {
|
||||
|
@ -201,7 +201,7 @@ int ogs_pfcp_sockaddr_to_f_teid(
|
|||
memcpy(f_teid->addr6, addr6->sin6.sin6_addr.s6_addr, OGS_IPV6_LEN);
|
||||
*len = OGS_IPV6_LEN + hdr_len;
|
||||
} else
|
||||
ogs_assert_if_reached();
|
||||
ogs_expect_or_return_val(0, OGS_ERROR);
|
||||
|
||||
return OGS_OK;
|
||||
}
|
||||
|
|
|
@ -72,6 +72,15 @@ void ogs_pfcp_cp_handle_association_setup_request(
|
|||
node->up_function_features_len);
|
||||
}
|
||||
}
|
||||
|
||||
if (node->up_function_features.ftup == 0) {
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_sockaddr_t *addr = node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
}
|
||||
}
|
||||
|
||||
void ogs_pfcp_cp_handle_association_setup_response(
|
||||
|
@ -107,6 +116,15 @@ void ogs_pfcp_cp_handle_association_setup_response(
|
|||
node->up_function_features_len);
|
||||
}
|
||||
}
|
||||
|
||||
if (node->up_function_features.ftup == 0) {
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_sockaddr_t *addr = node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
}
|
||||
}
|
||||
|
||||
void ogs_pfcp_up_handle_association_setup_request(
|
||||
|
|
|
@ -630,7 +630,6 @@ sgwc_tunnel_t *sgwc_tunnel_add(
|
|||
{
|
||||
sgwc_sess_t *sess = NULL;
|
||||
sgwc_tunnel_t *tunnel = NULL;
|
||||
ogs_gtpu_resource_t *resource = NULL;
|
||||
|
||||
ogs_pfcp_pdr_t *pdr = NULL;
|
||||
ogs_pfcp_far_t *far = NULL;
|
||||
|
@ -707,6 +706,14 @@ sgwc_tunnel_t *sgwc_tunnel_add(
|
|||
pdr->f_teid.ch = 1;
|
||||
pdr->f_teid_len = 1;
|
||||
} else {
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_gtpu_resource_t *resource = NULL;
|
||||
ogs_sockaddr_t *addr = sess->pfcp_node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
|
||||
resource = ogs_pfcp_find_gtpu_resource(
|
||||
&sess->pfcp_node->gtpu_resource_list,
|
||||
sess->session.name, OGS_PFCP_INTERFACE_ACCESS);
|
||||
|
@ -730,9 +737,10 @@ sgwc_tunnel_t *sgwc_tunnel_add(
|
|||
tunnel->local_teid = tunnel->index;
|
||||
}
|
||||
|
||||
ogs_assert(tunnel->local_addr || tunnel->local_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(tunnel->local_addr, tunnel->local_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len);
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
tunnel->local_addr, tunnel->local_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len));
|
||||
pdr->f_teid.teid = tunnel->local_teid;
|
||||
}
|
||||
|
||||
|
|
|
@ -129,13 +129,11 @@ void sgwu_sxa_handle_session_establishment_request(
|
|||
else
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
} else {
|
||||
ogs_assert(
|
||||
ogs_gtp_self()->gtpu_addr ||
|
||||
ogs_gtp_self()->gtpu_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_gtp_self()->gtpu_addr,
|
||||
ogs_gtp_self()->gtpu_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len);
|
||||
&pdr->f_teid, &pdr->f_teid_len));
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
}
|
||||
}
|
||||
|
@ -335,13 +333,11 @@ void sgwu_sxa_handle_session_modification_request(
|
|||
else
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
} else {
|
||||
ogs_assert(
|
||||
ogs_gtp_self()->gtpu_addr ||
|
||||
ogs_gtp_self()->gtpu_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_gtp_self()->gtpu_addr,
|
||||
ogs_gtp_self()->gtpu_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len);
|
||||
&pdr->f_teid, &pdr->f_teid_len));
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -169,7 +169,16 @@ void smf_bearer_binding(smf_sess_t *sess)
|
|||
ul_pdr->f_teid.ch = 1;
|
||||
ul_pdr->f_teid_len = 1;
|
||||
} else {
|
||||
ogs_gtpu_resource_t *resource = ogs_pfcp_find_gtpu_resource(
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_gtpu_resource_t *resource = NULL;
|
||||
ogs_sockaddr_t *addr = sess->pfcp_node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported "
|
||||
"with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
|
||||
resource = ogs_pfcp_find_gtpu_resource(
|
||||
&sess->pfcp_node->gtpu_resource_list,
|
||||
sess->session.name, OGS_PFCP_INTERFACE_ACCESS);
|
||||
if (resource) {
|
||||
|
@ -196,10 +205,10 @@ void smf_bearer_binding(smf_sess_t *sess)
|
|||
bearer->pgw_s5u_teid = bearer->index;
|
||||
}
|
||||
|
||||
ogs_assert(bearer->pgw_s5u_addr || bearer->pgw_s5u_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(bearer->pgw_s5u_addr,
|
||||
bearer->pgw_s5u_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len);
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len));
|
||||
ul_pdr->f_teid.teid = bearer->pgw_s5u_teid;
|
||||
}
|
||||
|
||||
|
@ -480,10 +489,18 @@ void smf_qos_flow_binding(smf_sess_t *sess, ogs_sbi_stream_t *stream)
|
|||
ul_pdr->f_teid.choose_id = OGS_PFCP_DEFAULT_CHOOSE_ID;
|
||||
ul_pdr->f_teid_len = 2;
|
||||
} else {
|
||||
ogs_assert(sess->upf_n3_addr || sess->upf_n3_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_sockaddr_t *addr = sess->pfcp_node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported "
|
||||
"with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len);
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len));
|
||||
ul_pdr->f_teid.teid = sess->upf_n3_teid;
|
||||
}
|
||||
|
||||
|
|
|
@ -1669,11 +1669,17 @@ void smf_sess_create_indirect_data_forwarding(smf_sess_t *sess)
|
|||
pdr->f_teid.choose_id = OGS_PFCP_INDIRECT_DATA_FORWARDING_CHOOSE_ID;
|
||||
pdr->f_teid_len = 2;
|
||||
} else {
|
||||
ogs_assert(sess->upf_n3_addr || sess->upf_n3_addr6);
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_sockaddr_t *addr = sess->pfcp_node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_error("F-TEID allocation/release not supported "
|
||||
"with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len);
|
||||
&pdr->f_teid, &pdr->f_teid_len));
|
||||
pdr->f_teid.teid = sess->upf_n3_teid;
|
||||
}
|
||||
|
||||
|
|
|
@ -197,7 +197,15 @@ void smf_gx_handle_cca_initial_request(
|
|||
up2cp_pdr->f_teid.choose_id = OGS_PFCP_DEFAULT_CHOOSE_ID;
|
||||
up2cp_pdr->f_teid_len = 2;
|
||||
} else {
|
||||
ogs_gtpu_resource_t *resource = ogs_pfcp_find_gtpu_resource(
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_gtpu_resource_t *resource = NULL;
|
||||
ogs_sockaddr_t *addr = sess->pfcp_node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
|
||||
resource = ogs_pfcp_find_gtpu_resource(
|
||||
&sess->pfcp_node->gtpu_resource_list,
|
||||
sess->session.name, OGS_PFCP_INTERFACE_ACCESS);
|
||||
if (resource) {
|
||||
|
@ -221,19 +229,22 @@ void smf_gx_handle_cca_initial_request(
|
|||
bearer->pgw_s5u_teid = bearer->index;
|
||||
}
|
||||
|
||||
ogs_assert(bearer->pgw_s5u_addr || bearer->pgw_s5u_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len);
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len));
|
||||
ul_pdr->f_teid.teid = bearer->pgw_s5u_teid;
|
||||
|
||||
ogs_assert(ogs_gtp_self()->gtpu_addr || ogs_gtp_self()->gtpu_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_gtp_self()->gtpu_addr, ogs_gtp_self()->gtpu_addr6,
|
||||
&cp2up_pdr->f_teid, &cp2up_pdr->f_teid_len);
|
||||
&cp2up_pdr->f_teid, &cp2up_pdr->f_teid_len));
|
||||
cp2up_pdr->f_teid.teid = bearer->index;
|
||||
|
||||
ogs_pfcp_sockaddr_to_f_teid(sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&up2cp_pdr->f_teid, &up2cp_pdr->f_teid_len);
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
bearer->pgw_s5u_addr, bearer->pgw_s5u_addr6,
|
||||
&up2cp_pdr->f_teid, &up2cp_pdr->f_teid_len));
|
||||
up2cp_pdr->f_teid.teid = bearer->pgw_s5u_teid;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,6 @@ bool smf_npcf_smpolicycontrol_handle_create(
|
|||
smf_ue_t *smf_ue = NULL;
|
||||
|
||||
smf_bearer_t *qos_flow = NULL;
|
||||
ogs_gtpu_resource_t *resource = NULL;
|
||||
ogs_pfcp_pdr_t *dl_pdr = NULL;
|
||||
ogs_pfcp_pdr_t *ul_pdr = NULL;
|
||||
ogs_pfcp_pdr_t *cp2up_pdr = NULL;
|
||||
|
@ -439,6 +438,14 @@ bool smf_npcf_smpolicycontrol_handle_create(
|
|||
up2cp_pdr->f_teid.choose_id = OGS_PFCP_DEFAULT_CHOOSE_ID;
|
||||
up2cp_pdr->f_teid_len = 2;
|
||||
} else {
|
||||
char buf[OGS_ADDRSTRLEN];
|
||||
ogs_gtpu_resource_t *resource = NULL;
|
||||
ogs_sockaddr_t *addr = sess->pfcp_node->sa_list;
|
||||
ogs_assert(addr);
|
||||
|
||||
ogs_error("F-TEID allocation/release not supported with peer [%s]:%d",
|
||||
OGS_ADDR(addr, buf), OGS_PORT(addr));
|
||||
|
||||
resource = ogs_pfcp_find_gtpu_resource(
|
||||
&sess->pfcp_node->gtpu_resource_list,
|
||||
sess->session.name, OGS_PFCP_INTERFACE_ACCESS);
|
||||
|
@ -462,20 +469,22 @@ bool smf_npcf_smpolicycontrol_handle_create(
|
|||
sess->upf_n3_teid = sess->index;
|
||||
}
|
||||
|
||||
ogs_assert(sess->upf_n3_addr || sess->upf_n3_addr6);
|
||||
|
||||
ogs_pfcp_sockaddr_to_f_teid(sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len);
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&ul_pdr->f_teid, &ul_pdr->f_teid_len));
|
||||
ul_pdr->f_teid.teid = sess->upf_n3_teid;
|
||||
|
||||
ogs_assert(ogs_gtp_self()->gtpu_addr || ogs_gtp_self()->gtpu_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_gtp_self()->gtpu_addr, ogs_gtp_self()->gtpu_addr6,
|
||||
&cp2up_pdr->f_teid, &cp2up_pdr->f_teid_len);
|
||||
&cp2up_pdr->f_teid, &cp2up_pdr->f_teid_len));
|
||||
cp2up_pdr->f_teid.teid = sess->index;
|
||||
|
||||
ogs_pfcp_sockaddr_to_f_teid(sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&up2cp_pdr->f_teid, &up2cp_pdr->f_teid_len);
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
sess->upf_n3_addr, sess->upf_n3_addr6,
|
||||
&up2cp_pdr->f_teid, &up2cp_pdr->f_teid_len));
|
||||
up2cp_pdr->f_teid.teid = sess->upf_n3_teid;
|
||||
}
|
||||
|
||||
|
|
|
@ -134,13 +134,11 @@ void upf_n4_handle_session_establishment_request(
|
|||
else
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
} else {
|
||||
ogs_assert(
|
||||
ogs_gtp_self()->gtpu_addr ||
|
||||
ogs_gtp_self()->gtpu_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_gtp_self()->gtpu_addr,
|
||||
ogs_gtp_self()->gtpu_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len);
|
||||
&pdr->f_teid, &pdr->f_teid_len));
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
}
|
||||
}
|
||||
|
@ -348,13 +346,11 @@ void upf_n4_handle_session_modification_request(
|
|||
else
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
} else {
|
||||
ogs_assert(
|
||||
ogs_gtp_self()->gtpu_addr ||
|
||||
ogs_gtp_self()->gtpu_addr6);
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_pfcp_sockaddr_to_f_teid(
|
||||
ogs_gtp_self()->gtpu_addr,
|
||||
ogs_gtp_self()->gtpu_addr6,
|
||||
&pdr->f_teid, &pdr->f_teid_len);
|
||||
&pdr->f_teid, &pdr->f_teid_len));
|
||||
pdr->f_teid.teid = pdr->index;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue