[#314] further refined
This commit is contained in:
parent
636170e0da
commit
ed701ce90e
|
@ -277,3 +277,16 @@ void ogs_socknode_set_cleanup(
|
|||
|
||||
node->cleanup = cleanup;
|
||||
}
|
||||
|
||||
ogs_sock_t *ogs_socknode_sock_first(ogs_list_t *list)
|
||||
{
|
||||
ogs_socknode_t *snode = NULL;
|
||||
|
||||
ogs_assert(list);
|
||||
ogs_list_for_each(list, snode) {
|
||||
if (snode->sock)
|
||||
return snode->sock;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -79,6 +79,8 @@ void ogs_socknode_linger(ogs_socknode_t *node, int onoff, int linger);
|
|||
void ogs_socknode_set_cleanup(
|
||||
ogs_socknode_t *node, void (*cleanup)(ogs_sock_t *));
|
||||
|
||||
ogs_sock_t *ogs_socknode_sock_first(ogs_list_t *list);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -159,23 +159,17 @@ int ogs_gtp_ip_to_f_teid(ogs_ip_t *ip, ogs_gtp_f_teid_t *f_teid, int *len)
|
|||
f_teid->ipv4 = ip->ipv4;
|
||||
f_teid->ipv6 = ip->ipv6;
|
||||
|
||||
if (f_teid->ipv4 && f_teid->ipv6)
|
||||
{
|
||||
if (f_teid->ipv4 && f_teid->ipv6) {
|
||||
f_teid->both.addr = ip->both.addr;
|
||||
memcpy(f_teid->both.addr6, ip->both.addr6, OGS_IPV6_LEN);
|
||||
*len = OGS_GTP_F_TEID_IPV4V6_LEN;
|
||||
}
|
||||
else if (f_teid->ipv4)
|
||||
{
|
||||
} else if (f_teid->ipv4) {
|
||||
f_teid->addr = ip->addr;
|
||||
*len = OGS_GTP_F_TEID_IPV4_LEN;
|
||||
}
|
||||
else if (f_teid->ipv6)
|
||||
{
|
||||
} else if (f_teid->ipv6) {
|
||||
memcpy(f_teid->addr6, ip->addr6, OGS_IPV6_LEN);
|
||||
*len = OGS_GTP_F_TEID_IPV6_LEN;
|
||||
}
|
||||
else
|
||||
} else
|
||||
ogs_assert_if_reached();
|
||||
|
||||
return OGS_OK;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
/*******************************************************************************
|
||||
* This file had been created by gtp-tlv.py script v0.1.0
|
||||
* Please do not modify this file but regenerate it via script.
|
||||
* Created on: 2019-11-30 15:13:18.975101 by acetcom
|
||||
* Created on: 2019-12-01 20:13:45.045437 by acetcom
|
||||
* from 29274-d80.docx
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -2790,127 +2790,126 @@ int ogs_gtp_parse_msg(ogs_gtp_message_t *gtp_message, ogs_pkbuf_t *pkbuf)
|
|||
if (pkbuf->len == 0)
|
||||
return OGS_OK;
|
||||
|
||||
switch(gtp_message->h.type)
|
||||
{
|
||||
case OGS_GTP_ECHO_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->echo_request,
|
||||
&ogs_tlv_desc_echo_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_ECHO_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->echo_response,
|
||||
&ogs_tlv_desc_echo_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_session_request,
|
||||
&ogs_tlv_desc_create_session_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_session_response,
|
||||
&ogs_tlv_desc_create_session_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_request,
|
||||
&ogs_tlv_desc_modify_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_response,
|
||||
&ogs_tlv_desc_modify_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_session_request,
|
||||
&ogs_tlv_desc_delete_session_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_session_response,
|
||||
&ogs_tlv_desc_delete_session_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_COMMAND_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_command,
|
||||
&ogs_tlv_desc_modify_bearer_command, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_failure_indication,
|
||||
&ogs_tlv_desc_modify_bearer_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_COMMAND_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_command,
|
||||
&ogs_tlv_desc_delete_bearer_command, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_failure_indication,
|
||||
&ogs_tlv_desc_delete_bearer_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_FAILURE_INDICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification_failure_indication,
|
||||
&ogs_tlv_desc_downlink_data_notification_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_bearer_request,
|
||||
&ogs_tlv_desc_create_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_bearer_response,
|
||||
&ogs_tlv_desc_create_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->update_bearer_request,
|
||||
&ogs_tlv_desc_update_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->update_bearer_response,
|
||||
&ogs_tlv_desc_update_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_request,
|
||||
&ogs_tlv_desc_delete_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_response,
|
||||
&ogs_tlv_desc_delete_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_indirect_data_forwarding_tunnel_request,
|
||||
&ogs_tlv_desc_create_indirect_data_forwarding_tunnel_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_indirect_data_forwarding_tunnel_response,
|
||||
&ogs_tlv_desc_create_indirect_data_forwarding_tunnel_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_indirect_data_forwarding_tunnel_request,
|
||||
&ogs_tlv_desc_delete_indirect_data_forwarding_tunnel_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_indirect_data_forwarding_tunnel_response,
|
||||
&ogs_tlv_desc_delete_indirect_data_forwarding_tunnel_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->release_access_bearers_request,
|
||||
&ogs_tlv_desc_release_access_bearers_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->release_access_bearers_response,
|
||||
&ogs_tlv_desc_release_access_bearers_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification,
|
||||
&ogs_tlv_desc_downlink_data_notification, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification_acknowledge,
|
||||
&ogs_tlv_desc_downlink_data_notification_acknowledge, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_ACCESS_BEARERS_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_access_bearers_request,
|
||||
&ogs_tlv_desc_modify_access_bearers_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_ACCESS_BEARERS_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_access_bearers_response,
|
||||
&ogs_tlv_desc_modify_access_bearers_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
default:
|
||||
ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type);
|
||||
break;
|
||||
switch(gtp_message->h.type) {
|
||||
case OGS_GTP_ECHO_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->echo_request,
|
||||
&ogs_tlv_desc_echo_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_ECHO_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->echo_response,
|
||||
&ogs_tlv_desc_echo_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_SESSION_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_session_request,
|
||||
&ogs_tlv_desc_create_session_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_SESSION_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_session_response,
|
||||
&ogs_tlv_desc_create_session_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_request,
|
||||
&ogs_tlv_desc_modify_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_response,
|
||||
&ogs_tlv_desc_modify_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_SESSION_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_session_request,
|
||||
&ogs_tlv_desc_delete_session_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_SESSION_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_session_response,
|
||||
&ogs_tlv_desc_delete_session_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_COMMAND_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_command,
|
||||
&ogs_tlv_desc_modify_bearer_command, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_BEARER_FAILURE_INDICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_bearer_failure_indication,
|
||||
&ogs_tlv_desc_modify_bearer_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_COMMAND_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_command,
|
||||
&ogs_tlv_desc_delete_bearer_command, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_FAILURE_INDICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_failure_indication,
|
||||
&ogs_tlv_desc_delete_bearer_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_FAILURE_INDICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification_failure_indication,
|
||||
&ogs_tlv_desc_downlink_data_notification_failure_indication, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_bearer_request,
|
||||
&ogs_tlv_desc_create_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_bearer_response,
|
||||
&ogs_tlv_desc_create_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_UPDATE_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->update_bearer_request,
|
||||
&ogs_tlv_desc_update_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_UPDATE_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->update_bearer_response,
|
||||
&ogs_tlv_desc_update_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_request,
|
||||
&ogs_tlv_desc_delete_bearer_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_BEARER_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_bearer_response,
|
||||
&ogs_tlv_desc_delete_bearer_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_indirect_data_forwarding_tunnel_request,
|
||||
&ogs_tlv_desc_create_indirect_data_forwarding_tunnel_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_CREATE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->create_indirect_data_forwarding_tunnel_response,
|
||||
&ogs_tlv_desc_create_indirect_data_forwarding_tunnel_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_indirect_data_forwarding_tunnel_request,
|
||||
&ogs_tlv_desc_delete_indirect_data_forwarding_tunnel_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DELETE_INDIRECT_DATA_FORWARDING_TUNNEL_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->delete_indirect_data_forwarding_tunnel_response,
|
||||
&ogs_tlv_desc_delete_indirect_data_forwarding_tunnel_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->release_access_bearers_request,
|
||||
&ogs_tlv_desc_release_access_bearers_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_RELEASE_ACCESS_BEARERS_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->release_access_bearers_response,
|
||||
&ogs_tlv_desc_release_access_bearers_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification,
|
||||
&ogs_tlv_desc_downlink_data_notification, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->downlink_data_notification_acknowledge,
|
||||
&ogs_tlv_desc_downlink_data_notification_acknowledge, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_ACCESS_BEARERS_REQUEST_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_access_bearers_request,
|
||||
&ogs_tlv_desc_modify_access_bearers_request, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
case OGS_GTP_MODIFY_ACCESS_BEARERS_RESPONSE_TYPE:
|
||||
rv = ogs_tlv_parse_msg(>p_message->modify_access_bearers_response,
|
||||
&ogs_tlv_desc_modify_access_bearers_response, pkbuf, OGS_TLV_MODE_T1_L2_I1);
|
||||
break;
|
||||
default:
|
||||
ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type);
|
||||
break;
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
/*******************************************************************************
|
||||
* This file had been created by gtp-tlv.py script v0.1.0
|
||||
* Please do not modify this file but regenerate it via script.
|
||||
* Created on: 2019-11-30 15:13:18.956844 by acetcom
|
||||
* Created on: 2019-12-01 20:13:45.039285 by acetcom
|
||||
* from 29274-d80.docx
|
||||
******************************************************************************/
|
||||
|
||||
|
|
|
@ -76,34 +76,6 @@ int ogs_gtp_connect(ogs_sock_t *ipv4, ogs_sock_t *ipv6, ogs_gtp_node_t *gnode)
|
|||
return OGS_OK;
|
||||
}
|
||||
|
||||
ogs_sock_t *ogs_gtp_local_sock_first(ogs_list_t *list)
|
||||
{
|
||||
ogs_socknode_t *snode = NULL;
|
||||
|
||||
ogs_assert(list);
|
||||
ogs_list_for_each(list, snode) {
|
||||
if (snode->sock)
|
||||
return snode->sock;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ogs_sockaddr_t *ogs_gtp_local_addr_first(ogs_list_t *list)
|
||||
{
|
||||
ogs_socknode_t *snode = NULL;
|
||||
|
||||
ogs_assert(list);
|
||||
ogs_list_for_each(list, snode) {
|
||||
ogs_sock_t *sock = snode->sock;
|
||||
ogs_assert(snode->sock);
|
||||
|
||||
return &sock->local_addr;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ogs_gtp_send(ogs_gtp_node_t *gnode, ogs_pkbuf_t *pkbuf)
|
||||
{
|
||||
ssize_t sent;
|
||||
|
|
|
@ -33,9 +33,6 @@ typedef struct ogs_gtp_xact_s ogs_gtp_xact_t;
|
|||
ogs_sock_t *ogs_gtp_server(ogs_socknode_t *node);
|
||||
int ogs_gtp_connect(ogs_sock_t *ipv4, ogs_sock_t *ipv6, ogs_gtp_node_t *gnode);
|
||||
|
||||
ogs_sock_t *ogs_gtp_local_sock_first(ogs_list_t *list);
|
||||
ogs_sockaddr_t *ogs_gtp_local_addr_first(ogs_list_t *list);
|
||||
|
||||
int ogs_gtp_send(ogs_gtp_node_t *gnode, ogs_pkbuf_t *pkbuf);
|
||||
int ogs_gtp_sendto(ogs_gtp_node_t *gnode, ogs_pkbuf_t *pkbuf);
|
||||
|
||||
|
|
|
@ -628,18 +628,17 @@ f.write("""int ogs_gtp_parse_msg(ogs_gtp_message_t *gtp_message, ogs_pkbuf_t *pk
|
|||
if (pkbuf->len == 0)
|
||||
return OGS_OK;
|
||||
|
||||
switch(gtp_message->h.type)
|
||||
{
|
||||
switch(gtp_message->h.type) {
|
||||
""")
|
||||
for (k, v) in sorted_msg_list:
|
||||
if "ies" in msg_list[k]:
|
||||
f.write(" case OGS_GTP_%s_TYPE:\n" % v_upper(k))
|
||||
f.write(" rv = ogs_tlv_parse_msg(>p_message->%s,\n" % v_lower(k))
|
||||
f.write(" &ogs_tlv_desc_%s, pkbuf, OGS_TLV_MODE_T1_L2_I1);\n" % v_lower(k))
|
||||
f.write(" break;\n")
|
||||
f.write(""" default:
|
||||
ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type);
|
||||
break;
|
||||
f.write(" case OGS_GTP_%s_TYPE:\n" % v_upper(k))
|
||||
f.write(" rv = ogs_tlv_parse_msg(>p_message->%s,\n" % v_lower(k))
|
||||
f.write(" &ogs_tlv_desc_%s, pkbuf, OGS_TLV_MODE_T1_L2_I1);\n" % v_lower(k))
|
||||
f.write(" break;\n")
|
||||
f.write(""" default:
|
||||
ogs_warn("Not implmeneted(type:%d)", gtp_message->h.type);
|
||||
break;
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
|
|
@ -132,10 +132,13 @@ int mme_gtp_open(void)
|
|||
OGS_POLLIN, sock->fd, _gtpv2_c_recv_cb, sock);
|
||||
}
|
||||
|
||||
mme_self()->gtpc_sock = ogs_gtp_local_sock_first(&mme_self()->gtpc_list);
|
||||
mme_self()->gtpc_sock6 = ogs_gtp_local_sock_first(&mme_self()->gtpc_list6);
|
||||
mme_self()->gtpc_addr = ogs_gtp_local_addr_first(&mme_self()->gtpc_list);
|
||||
mme_self()->gtpc_addr6 = ogs_gtp_local_addr_first(&mme_self()->gtpc_list6);
|
||||
mme_self()->gtpc_sock = ogs_socknode_sock_first(&mme_self()->gtpc_list);
|
||||
if (mme_self()->gtpc_sock)
|
||||
mme_self()->gtpc_addr = &mme_self()->gtpc_sock->local_addr;
|
||||
|
||||
mme_self()->gtpc_sock6 = ogs_socknode_sock_first(&mme_self()->gtpc_list6);
|
||||
if (mme_self()->gtpc_sock6)
|
||||
mme_self()->gtpc_addr6 = &mme_self()->gtpc_sock6->local_addr;
|
||||
|
||||
ogs_assert(mme_self()->gtpc_addr || mme_self()->gtpc_addr6);
|
||||
|
||||
|
|
|
@ -232,10 +232,13 @@ int pgw_gtp_open(void)
|
|||
OGS_POLLIN, sock->fd, _gtpv2_c_recv_cb, sock);
|
||||
}
|
||||
|
||||
pgw_self()->gtpc_sock = ogs_gtp_local_sock_first(&pgw_self()->gtpc_list);
|
||||
pgw_self()->gtpc_sock6 = ogs_gtp_local_sock_first(&pgw_self()->gtpc_list6);
|
||||
pgw_self()->gtpc_addr = ogs_gtp_local_addr_first(&pgw_self()->gtpc_list);
|
||||
pgw_self()->gtpc_addr6 = ogs_gtp_local_addr_first(&pgw_self()->gtpc_list6);
|
||||
pgw_self()->gtpc_sock = ogs_socknode_sock_first(&pgw_self()->gtpc_list);
|
||||
if (pgw_self()->gtpc_sock)
|
||||
pgw_self()->gtpc_addr = &pgw_self()->gtpc_sock->local_addr;
|
||||
|
||||
pgw_self()->gtpc_sock6 = ogs_socknode_sock_first(&pgw_self()->gtpc_list6);
|
||||
if (pgw_self()->gtpc_sock6)
|
||||
pgw_self()->gtpc_addr6 = &pgw_self()->gtpc_sock6->local_addr;
|
||||
|
||||
ogs_assert(pgw_self()->gtpc_addr || pgw_self()->gtpc_addr6);
|
||||
|
||||
|
@ -254,10 +257,13 @@ int pgw_gtp_open(void)
|
|||
OGS_POLLIN, sock->fd, _gtpv1_u_recv_cb, sock);
|
||||
}
|
||||
|
||||
pgw_self()->gtpu_sock = ogs_gtp_local_sock_first(&pgw_self()->gtpu_list);
|
||||
pgw_self()->gtpu_sock6 = ogs_gtp_local_sock_first(&pgw_self()->gtpu_list6);
|
||||
pgw_self()->gtpu_addr = ogs_gtp_local_addr_first(&pgw_self()->gtpu_list);
|
||||
pgw_self()->gtpu_addr6 = ogs_gtp_local_addr_first(&pgw_self()->gtpu_list6);
|
||||
pgw_self()->gtpu_sock = ogs_socknode_sock_first(&pgw_self()->gtpu_list);
|
||||
if (pgw_self()->gtpu_sock)
|
||||
pgw_self()->gtpu_addr = &pgw_self()->gtpu_sock->local_addr;
|
||||
|
||||
pgw_self()->gtpu_sock6 = ogs_socknode_sock_first(&pgw_self()->gtpu_list6);
|
||||
if (pgw_self()->gtpu_sock6)
|
||||
pgw_self()->gtpu_addr6 = &pgw_self()->gtpu_sock6->local_addr;
|
||||
|
||||
ogs_assert(pgw_self()->gtpu_addr || pgw_self()->gtpu_addr6);
|
||||
|
||||
|
|
|
@ -316,10 +316,13 @@ int sgw_gtp_open(void)
|
|||
OGS_POLLIN, sock->fd, _gtpv2_c_recv_cb, sock);
|
||||
}
|
||||
|
||||
sgw_self()->gtpc_sock = ogs_gtp_local_sock_first(&sgw_self()->gtpc_list);
|
||||
sgw_self()->gtpc_sock6 = ogs_gtp_local_sock_first(&sgw_self()->gtpc_list6);
|
||||
sgw_self()->gtpc_addr = ogs_gtp_local_addr_first(&sgw_self()->gtpc_list);
|
||||
sgw_self()->gtpc_addr6 = ogs_gtp_local_addr_first(&sgw_self()->gtpc_list6);
|
||||
sgw_self()->gtpc_sock = ogs_socknode_sock_first(&sgw_self()->gtpc_list);
|
||||
if (sgw_self()->gtpc_sock)
|
||||
sgw_self()->gtpc_addr = &sgw_self()->gtpc_sock->local_addr;
|
||||
|
||||
sgw_self()->gtpc_sock6 = ogs_socknode_sock_first(&sgw_self()->gtpc_list6);
|
||||
if (sgw_self()->gtpc_sock6)
|
||||
sgw_self()->gtpc_addr6 = &sgw_self()->gtpc_sock6->local_addr;
|
||||
|
||||
ogs_assert(sgw_self()->gtpc_addr || sgw_self()->gtpc_addr6);
|
||||
|
||||
|
@ -338,10 +341,13 @@ int sgw_gtp_open(void)
|
|||
OGS_POLLIN, sock->fd, _gtpv1_u_recv_cb, sock);
|
||||
}
|
||||
|
||||
sgw_self()->gtpu_sock = ogs_gtp_local_sock_first(&sgw_self()->gtpu_list);
|
||||
sgw_self()->gtpu_sock6 = ogs_gtp_local_sock_first(&sgw_self()->gtpu_list6);
|
||||
sgw_self()->gtpu_addr = ogs_gtp_local_addr_first(&sgw_self()->gtpu_list);
|
||||
sgw_self()->gtpu_addr6 = ogs_gtp_local_addr_first(&sgw_self()->gtpu_list6);
|
||||
sgw_self()->gtpu_sock = ogs_socknode_sock_first(&sgw_self()->gtpu_list);
|
||||
if (sgw_self()->gtpu_sock)
|
||||
sgw_self()->gtpu_addr = &sgw_self()->gtpu_sock->local_addr;
|
||||
|
||||
sgw_self()->gtpu_sock6 = ogs_socknode_sock_first(&sgw_self()->gtpu_list6);
|
||||
if (sgw_self()->gtpu_sock6)
|
||||
sgw_self()->gtpu_addr6 = &sgw_self()->gtpu_sock6->local_addr;
|
||||
|
||||
ogs_assert(sgw_self()->gtpu_addr || sgw_self()->gtpu_addr6);
|
||||
|
||||
|
|
Loading…
Reference in New Issue