[PFCP] Add more error log (#1012)

This commit is contained in:
Sukchan Lee 2021-05-30 20:35:30 +09:00
parent ef07ccfb88
commit 80a9497afd
9 changed files with 118 additions and 57 deletions

View File

@ -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;
}

View File

@ -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(

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}