name changes

This commit is contained in:
Sukchan Lee 2017-12-03 22:25:31 +09:00
parent 97c7ad63b6
commit 609aa4558f
12 changed files with 89 additions and 64 deletions

View File

@ -92,6 +92,26 @@ typedef struct _guti_t {
c_uint32_t m_tmsi;
} __attribute__ ((packed)) guti_t;
/**************************************************
* Common Structure
* S1AP : 9.2.2.1 Transport Layer Address, See 36.414
* GTP : 8.22 Fully Qualified TEID (F-TEID) */
typedef struct _ip_t {
union {
/* GTP_F_TEID_IPV4 */
c_uint32_t addr;
/* GTP_F_TEID_IPV6 */
c_uint8_t addr6[IPV6_LEN];
/* GTP_F_TEID_BOTH */
struct {
c_uint32_t addr;
c_uint8_t addr6[IPV6_LEN];
} both;
};
} ip_t;
/**************************************************
* 8.14 PDN Address Allocation (PAA) */
#define PAA_IPV4_LEN 5
@ -106,14 +126,25 @@ typedef struct _paa_t {
ED2(c_uint8_t spare:5;,
c_uint8_t pdn_type:3;)
union {
c_uint32_t ipv4_addr;;
/* GTP_PDN_TYPE_IPV4 */
c_uint32_t addr;
/* GTP_PDN_TYPE_IPV6 */
struct {
c_uint8_t ipv6_len;
c_uint8_t ipv6_addr[IPV6_LEN];
c_uint8_t len;
c_uint8_t addr6[IPV6_LEN];
};
c_uint8_t ipv6_addr2[IPV6_LEN];
/* GTP_PDN_TYPE_BOTH */
struct {
c_uint32_t addr;
struct {
c_uint8_t len;
c_uint8_t addr6[IPV6_LEN];
};
} both;
};
c_uint32_t ipv4_addr2;
} __attribute__ ((packed)) paa_t;
#define MAX_BIT_RATE C_UINT64_C(10000000000)

View File

@ -404,22 +404,22 @@ c_int16_t gtp_build_f_teid(
if (f_teid->addr && f_teid->addr6)
{
target.ipv4 = 1;
target.both.ipv4_addr = f_teid->addr->sin.sin_addr.s_addr;
target.ip.both.addr = f_teid->addr->sin.sin_addr.s_addr;
target.ipv6 = 1;
memcpy(target.both.ipv6_addr,
memcpy(target.ip.both.addr6,
f_teid->addr6->sin6.sin6_addr.s6_addr, IPV6_LEN);
size = GTP_F_TEID_IPV4_AND_IPV6_LEN;
}
else if (f_teid->addr)
{
target.ipv4 = 1;
target.ipv4_addr = f_teid->addr->sin.sin_addr.s_addr;
target.ip.addr = f_teid->addr->sin.sin_addr.s_addr;
size = GTP_F_TEID_IPV4_LEN;
}
else if (f_teid->addr6)
{
target.ipv6 = 1;
memcpy(target.ipv6_addr,
memcpy(target.ip.addr6,
f_teid->addr6->sin6.sin6_addr.s6_addr, IPV6_LEN);
size = GTP_F_TEID_IPV6_LEN;
}

View File

@ -347,20 +347,14 @@ CORE_DECLARE(c_int16_t) gtp_build_uli(
#define GTP_F_TEID_IPV4_AND_IPV6_LEN 25
#define GTP_MAX_F_TEID_LEN 25
typedef struct _gtp_f_teid_t {
ED3(c_uint8_t ipv4:1;,
c_uint8_t ipv6:1;,
c_uint8_t interface_type:6;)
c_uint32_t teid;
union {
c_uint32_t ipv4_addr;
c_uint8_t ipv6_addr[IPV6_LEN];
struct {
c_uint32_t ipv4_addr;
c_uint8_t ipv6_addr[IPV6_LEN];
} both;
};
c_sockaddr_t *addr;
c_sockaddr_t *addr6;
ED3(c_uint8_t ipv4:1;,
c_uint8_t ipv6:1;,
c_uint8_t interface_type:6;)
c_uint32_t teid;
ip_t ip;
c_sockaddr_t *addr;
c_sockaddr_t *addr6;
} __attribute__ ((packed)) gtp_f_teid_t;
CORE_DECLARE(c_int16_t) gtp_build_f_teid(

View File

@ -82,7 +82,7 @@ status_t mme_s11_build_create_session_request(
{
/* FIXME */
pgw_s5c_teid.ipv4 = 1;
pgw_s5c_teid.ipv4_addr = pdn->pgw.ipv4_addr;
pgw_s5c_teid.ip.addr = pdn->pgw.ipv4_addr;
req->pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1;
req->pgw_s5_s8_address_for_control_plane_or_pmip.len =
GTP_F_TEID_IPV4_LEN;
@ -196,7 +196,7 @@ status_t mme_s11_build_modify_bearer_request(pkbuf_t **pkbuf,
memset(&enb_s1u_teid, 0, sizeof(gtp_f_teid_t));
enb_s1u_teid.ipv4 = 1;
enb_s1u_teid.interface_type = GTP_F_TEID_S1_U_ENODEB_GTP_U;
enb_s1u_teid.ipv4_addr = bearer->enb_s1u_addr;
enb_s1u_teid.ip.addr = bearer->enb_s1u_addr;
enb_s1u_teid.teid = htonl(bearer->enb_s1u_teid);
req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.presence = 1;
req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.data = &enb_s1u_teid;
@ -310,7 +310,7 @@ status_t mme_s11_build_create_bearer_response(
memset(&enb_s1u_teid, 0, sizeof(gtp_f_teid_t));
enb_s1u_teid.ipv4 = 1;
enb_s1u_teid.interface_type = GTP_F_TEID_S1_U_ENODEB_GTP_U;
enb_s1u_teid.ipv4_addr = bearer->enb_s1u_addr;
enb_s1u_teid.ip.addr = bearer->enb_s1u_addr;
enb_s1u_teid.teid = htonl(bearer->enb_s1u_teid);
rsp->bearer_contexts.s1_u_enodeb_f_teid.presence = 1;
rsp->bearer_contexts.s1_u_enodeb_f_teid.data = &enb_s1u_teid;
@ -320,7 +320,7 @@ status_t mme_s11_build_create_bearer_response(
memset(&sgw_s1u_teid, 0, sizeof(gtp_f_teid_t));
sgw_s1u_teid.ipv4 = 1;
sgw_s1u_teid.interface_type = GTP_F_TEID_S1_U_SGW_GTP_U;
sgw_s1u_teid.ipv4_addr = bearer->sgw_s1u_addr;
sgw_s1u_teid.ip.addr = bearer->sgw_s1u_addr;
sgw_s1u_teid.teid = htonl(bearer->sgw_s1u_teid);
rsp->bearer_contexts.s4_u_sgsn_f_teid.presence = 1;
rsp->bearer_contexts.s4_u_sgsn_f_teid.data = &sgw_s1u_teid;
@ -433,7 +433,7 @@ status_t mme_s11_build_create_indirect_data_forwarding_tunnel_request(
dl_teid[i].ipv4 = 1;
dl_teid[i].interface_type =
GTP_F_TEID_ENODEB_GTP_U_FOR_DL_DATA_FORWARDING;
dl_teid[i].ipv4_addr = bearer->enb_dl_addr;
dl_teid[i].ip.addr = bearer->enb_dl_addr;
dl_teid[i].teid = htonl(bearer->enb_dl_teid);
d_assert(bearers[i], return CORE_ERROR,);
bearers[i]->s1_u_enodeb_f_teid.presence = 1;
@ -447,7 +447,7 @@ status_t mme_s11_build_create_indirect_data_forwarding_tunnel_request(
ul_teid[i].ipv4 = 1;
ul_teid[i].interface_type =
GTP_F_TEID_ENODEB_GTP_U_FOR_UL_DATA_FORWARDING;
ul_teid[i].ipv4_addr = bearer->enb_ul_addr;
ul_teid[i].ip.addr = bearer->enb_ul_addr;
ul_teid[i].teid = htonl(bearer->enb_ul_teid);
d_assert(bearers[i], return CORE_ERROR,);
bearers[i]->s12_rnc_f_teid.presence = 1;

View File

@ -72,7 +72,7 @@ void mme_s11_handle_create_session_response(
/* Control Plane(UL) : SGW-S11 */
sgw_s11_teid = rsp->sender_f_teid_for_control_plane.data;
mme_ue->sgw_s11_teid = ntohl(sgw_s11_teid->teid);
mme_ue->sgw_s11_addr = sgw_s11_teid->ipv4_addr;
mme_ue->sgw_s11_addr = sgw_s11_teid->ip.addr;
memcpy(&pdn->paa, rsp->pdn_address_allocation.data,
rsp->pdn_address_allocation.len);
@ -86,7 +86,7 @@ void mme_s11_handle_create_session_response(
/* Data Plane(UL) : SGW-S1U */
sgw_s1u_teid = rsp->bearer_contexts_created.s1_u_enodeb_f_teid.data;
bearer->sgw_s1u_teid = ntohl(sgw_s1u_teid->teid);
bearer->sgw_s1u_addr = sgw_s1u_teid->ipv4_addr;
bearer->sgw_s1u_addr = sgw_s1u_teid->ip.addr;
d_trace(3, "[GTP] Create Session Response : "
"MME[%d] <-- SGW[%d]\n", mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
@ -264,7 +264,7 @@ void mme_s11_handle_create_bearer_request(
/* Data Plane(UL) : SGW-S1U */
sgw_s1u_teid = req->bearer_contexts.s1_u_enodeb_f_teid.data;
bearer->sgw_s1u_teid = ntohl(sgw_s1u_teid->teid);
bearer->sgw_s1u_addr = sgw_s1u_teid->ipv4_addr;
bearer->sgw_s1u_addr = sgw_s1u_teid->ip.addr;
/* Bearer QoS */
d_assert(gtp_parse_bearer_qos(&bearer_qos,
@ -402,7 +402,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
d_assert(teid, return,);
bearer->sgw_dl_teid = ntohl(teid->teid);
bearer->sgw_dl_addr = teid->ipv4_addr;
bearer->sgw_dl_addr = teid->ip.addr;
}
if (bearers[i]->s2b_u_epdg_f_teid_5.presence)
{
@ -410,7 +410,7 @@ void mme_s11_handle_create_indirect_data_forwarding_tunnel_response(
d_assert(teid, return,);
bearer->sgw_ul_teid = ntohl(teid->teid);
bearer->sgw_ul_addr = teid->ipv4_addr;
bearer->sgw_ul_addr = teid->ip.addr;
}
}

View File

@ -691,7 +691,7 @@ pgw_sess_t *pgw_sess_add(gtp_f_teid_t *sgw_s5c_teid,
memcpy(sess->imsi, imsi, sess->imsi_len);
core_buffer_to_bcd(sess->imsi, sess->imsi_len, sess->imsi_bcd);
addr = sgw_s5c_teid->ipv4_addr;
addr = sgw_s5c_teid->ip.addr;
sgw = pgw_sgw_find(addr);
if (!sgw)
{
@ -1031,7 +1031,7 @@ pgw_bearer_t* pgw_bearer_find_by_packet(pkbuf_t *pkt)
INET_NTOP(&sess->pdn.paa.ipv4_addr, buf2));
#endif
if (iph->ip_dst.s_addr == sess->pdn.paa.ipv4_addr)
if (iph->ip_dst.s_addr == sess->pdn.paa.addr)
{
/* Found */

View File

@ -46,7 +46,7 @@ status_t pgw_s5c_build_create_session_response(
memset(&pgw_s5c_teid, 0, sizeof(gtp_f_teid_t));
pgw_s5c_teid.ipv4 = 1;
pgw_s5c_teid.interface_type = GTP_F_TEID_S5_S8_PGW_GTP_C;
pgw_s5c_teid.ipv4_addr = sess->pgw_s5c_addr;
pgw_s5c_teid.ip.addr = sess->pgw_s5c_addr;
pgw_s5c_teid.teid = htonl(sess->pgw_s5c_teid);
rsp->pgw_s5_s8__s2a_s2b_f_teid_for_pmip_based_interface_or_for_gtp_based_control_plane_interface.
presence = 1;
@ -58,7 +58,7 @@ status_t pgw_s5c_build_create_session_response(
/* PDN Address Allocation */
d_assert(sess->ip_pool, return CORE_ERROR, "No IP Pool");
sess->pdn.paa.pdn_type = GTP_PDN_TYPE_IPV4;
sess->pdn.paa.ipv4_addr = sess->ip_pool->ue_addr;
sess->pdn.paa.addr = sess->ip_pool->ue_addr;
rsp->pdn_address_allocation.presence = 1;
rsp->pdn_address_allocation.data = &sess->pdn.paa;
@ -93,7 +93,7 @@ status_t pgw_s5c_build_create_session_response(
memset(&pgw_s5u_teid, 0, sizeof(gtp_f_teid_t));
pgw_s5u_teid.ipv4 = 1;
pgw_s5u_teid.interface_type = GTP_F_TEID_S5_S8_PGW_GTP_U;
pgw_s5u_teid.ipv4_addr = bearer->pgw_s5u_addr;
pgw_s5u_teid.ip.addr = bearer->pgw_s5u_addr;
pgw_s5u_teid.teid = htonl(bearer->pgw_s5u_teid);
rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence = 1;
rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.data = &pgw_s5u_teid;
@ -197,7 +197,7 @@ status_t pgw_s5c_build_create_bearer_request(
memset(&pgw_s5u_teid, 0, sizeof(gtp_f_teid_t));
pgw_s5u_teid.ipv4 = 1;
pgw_s5u_teid.interface_type = GTP_F_TEID_S5_S8_PGW_GTP_U;
pgw_s5u_teid.ipv4_addr = bearer->pgw_s5u_addr;
pgw_s5u_teid.ip.addr = bearer->pgw_s5u_addr;
pgw_s5u_teid.teid = htonl(bearer->pgw_s5u_teid);
req->bearer_contexts.s5_s8_u_sgw_f_teid.presence = 1;
req->bearer_contexts.s5_s8_u_sgw_f_teid.data = &pgw_s5u_teid;

View File

@ -71,13 +71,13 @@ void pgw_s5c_handle_create_session_request(
sgw_s5c_teid = req->sender_f_teid_for_control_plane.data;
d_assert(sgw_s5c_teid, return, "Null param");
sess->sgw_s5c_teid = ntohl(sgw_s5c_teid->teid);
sess->sgw_s5c_addr = sgw_s5c_teid->ipv4_addr;
sess->sgw_s5c_addr = sgw_s5c_teid->ip.addr;
/* Control Plane(DL) : SGW-S5U */
sgw_s5u_teid = req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.data;
d_assert(sgw_s5u_teid, return, "Null param");
bearer->sgw_s5u_teid = ntohl(sgw_s5u_teid->teid);
bearer->sgw_s5u_addr = sgw_s5u_teid->ipv4_addr;
bearer->sgw_s5u_addr = sgw_s5u_teid->ip.addr;
decoded = gtp_parse_bearer_qos(&bearer_qos,
&req->bearer_contexts_to_be_created.bearer_level_qos);
@ -161,7 +161,7 @@ void pgw_s5c_handle_create_bearer_response(
/* Data Plane(DL) : SGW-S5U */
sgw_s5u_teid = req->bearer_contexts.s5_s8_u_sgw_f_teid.data;
bearer->sgw_s5u_teid = ntohl(sgw_s5u_teid->teid);
bearer->sgw_s5u_addr = sgw_s5u_teid->ipv4_addr;
bearer->sgw_s5u_addr = sgw_s5u_teid->ip.addr;
rv = gtp_xact_commit(xact);
d_assert(rv == CORE_OK, return, "xact_commit error");

View File

@ -514,7 +514,7 @@ sgw_ue_t* sgw_ue_add(gtp_f_teid_t *mme_s11_teid,
sgw_ue->sgw_s11_teid = sgw_ue->index;
sgw_ue->sgw_s11_addr = sgw_self()->gtpc_addr;
addr = mme_s11_teid->ipv4_addr;
addr = mme_s11_teid->ip.addr;
mme = sgw_mme_find(addr);
if (!mme)

View File

@ -83,12 +83,12 @@ void sgw_s11_handle_create_session_request(gtp_xact_t *s11_xact,
mme_s11_teid = req->sender_f_teid_for_control_plane.data;
d_assert(mme_s11_teid, return, "Null param");
sgw_ue->mme_s11_teid = ntohl(mme_s11_teid->teid);
sgw_ue->mme_s11_addr = mme_s11_teid->ipv4_addr;
sgw_ue->mme_s11_addr = mme_s11_teid->ip.addr;
/* Send Control Plane(DL) : SGW-S5C */
memset(&sgw_s5c_teid, 0, sizeof(gtp_f_teid_t));
sgw_s5c_teid.teid = htonl(sess->sgw_s5c_teid);
sgw_s5c_teid.ipv4_addr = sess->sgw_s5c_addr;
sgw_s5c_teid.ip.addr = sess->sgw_s5c_addr;
sgw_s5c_teid.interface_type = GTP_F_TEID_S5_S8_SGW_GTP_C;
req->sender_f_teid_for_control_plane.presence = 1;
req->sender_f_teid_for_control_plane.data = &sgw_s5c_teid;
@ -98,7 +98,7 @@ void sgw_s11_handle_create_session_request(gtp_xact_t *s11_xact,
pgw_s5c_teid = req->pgw_s5_s8_address_for_control_plane_or_pmip.data;
d_assert(pgw_s5c_teid, return, "Null param");
addr = pgw_s5c_teid->ipv4_addr;
addr = pgw_s5c_teid->ip.addr;
pgw = sgw_pgw_find(addr);
if (!pgw)
@ -120,7 +120,7 @@ void sgw_s11_handle_create_session_request(gtp_xact_t *s11_xact,
/* Data Plane(DL) : SGW-S5U */
memset(&sgw_s5u_teid, 0, sizeof(gtp_f_teid_t));
sgw_s5u_teid.teid = htonl(s5u_tunnel->local_teid);
sgw_s5u_teid.ipv4_addr = s5u_tunnel->local_addr;
sgw_s5u_teid.ip.addr = s5u_tunnel->local_addr;
sgw_s5u_teid.interface_type = GTP_F_TEID_S5_S8_SGW_GTP_U;
req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.presence = 1;
req->bearer_contexts_to_be_created.s5_s8_u_sgw_f_teid.data = &sgw_s5u_teid;
@ -215,7 +215,7 @@ CORE_DECLARE(void) sgw_s11_handle_modify_bearer_request(gtp_xact_t *s11_xact,
/* Data Plane(DL) : eNB-S1U */
enb_s1u_teid = req->bearer_contexts_to_be_modified.s1_u_enodeb_f_teid.data;
s1u_tunnel->remote_teid = ntohl(enb_s1u_teid->teid);
s1u_tunnel->remote_addr = enb_s1u_teid->ipv4_addr;
s1u_tunnel->remote_addr = enb_s1u_teid->ip.addr;
/* Reset UE state */
SGW_RESET_UE_STATE(sgw_ue, SGW_S1U_INACTIVE);
@ -361,7 +361,7 @@ void sgw_s11_handle_create_bearer_response(gtp_xact_t *s11_xact,
/* Data Plane(DL) : eNB-S1U */
enb_s1u_teid = req->bearer_contexts.s1_u_enodeb_f_teid.data;
s1u_tunnel->remote_teid = ntohl(enb_s1u_teid->teid);
s1u_tunnel->remote_addr = enb_s1u_teid->ipv4_addr;
s1u_tunnel->remote_addr = enb_s1u_teid->ip.addr;
req->bearer_contexts.s1_u_enodeb_f_teid.presence = 0;
decoded = gtp_parse_uli(&uli, &req->user_location_information);
@ -377,7 +377,7 @@ void sgw_s11_handle_create_bearer_response(gtp_xact_t *s11_xact,
/* Data Plane(DL) : SGW-S5U */
memset(&sgw_s5u_teid, 0, sizeof(gtp_f_teid_t));
sgw_s5u_teid.teid = htonl(s5u_tunnel->local_teid);
sgw_s5u_teid.ipv4_addr = s5u_tunnel->local_addr;
sgw_s5u_teid.ip.addr = s5u_tunnel->local_addr;
sgw_s5u_teid.interface_type = GTP_F_TEID_S5_S8_SGW_GTP_U;
req->bearer_contexts.s5_s8_u_sgw_f_teid.presence = 1;
req->bearer_contexts.s5_s8_u_sgw_f_teid.data = &sgw_s5u_teid;
@ -386,7 +386,7 @@ void sgw_s11_handle_create_bearer_response(gtp_xact_t *s11_xact,
/* Data Plane(DL) : PGW-S5U */
memset(&pgw_s5u_teid, 0, sizeof(gtp_f_teid_t));
pgw_s5u_teid.teid = htonl(s5u_tunnel->remote_teid);
pgw_s5u_teid.ipv4_addr = s5u_tunnel->remote_addr;
pgw_s5u_teid.ip.addr = s5u_tunnel->remote_addr;
pgw_s5u_teid.interface_type = GTP_F_TEID_S5_S8_PGW_GTP_U;
req->bearer_contexts.s5_s8_u_pgw_f_teid.presence = 1;
req->bearer_contexts.s5_s8_u_pgw_f_teid.data = &pgw_s5u_teid;
@ -587,11 +587,11 @@ void sgw_s11_handle_create_indirect_data_forwarding_tunnel_request(
d_assert(tunnel, return, "No Tunnel Context");
tunnel->remote_teid = ntohl(req_teid->teid);
tunnel->remote_addr = req_teid->ipv4_addr;
tunnel->remote_addr = req_teid->ip.addr;
memset(&rsp_dl_teid[i], 0, sizeof(gtp_f_teid_t));
rsp_dl_teid[i].ipv4 = 1;
rsp_dl_teid[i].ipv4_addr = tunnel->local_addr;
rsp_dl_teid[i].ip.addr = tunnel->local_addr;
rsp_dl_teid[i].teid = htonl(tunnel->local_teid);
rsp_dl_teid[i].interface_type = tunnel->interface_type;
@ -610,11 +610,11 @@ void sgw_s11_handle_create_indirect_data_forwarding_tunnel_request(
d_assert(tunnel, return, "No Tunnel Context");
tunnel->remote_teid = ntohl(req_teid->teid);
tunnel->remote_addr = req_teid->ipv4_addr;
tunnel->remote_addr = req_teid->ip.addr;
memset(&rsp_ul_teid[i], 0, sizeof(gtp_f_teid_t));
rsp_ul_teid[i].ipv4 = 1;
rsp_ul_teid[i].ipv4_addr = tunnel->local_addr;
rsp_ul_teid[i].ip.addr = tunnel->local_addr;
rsp_ul_teid[i].teid = htonl(tunnel->local_teid);
rsp_ul_teid[i].interface_type = tunnel->interface_type;

View File

@ -71,7 +71,7 @@ void sgw_s5c_handle_create_session_response(gtp_xact_t *s5c_xact,
data;
d_assert(pgw_s5c_teid, return, "Null param");
sess->pgw_s5c_teid = ntohl(pgw_s5c_teid->teid);
sess->pgw_s5c_addr = pgw_s5c_teid->ipv4_addr;
sess->pgw_s5c_addr = pgw_s5c_teid->ip.addr;
rsp->pgw_s5_s8__s2a_s2b_f_teid_for_pmip_based_interface_or_for_gtp_based_control_plane_interface.
presence = 0;
@ -79,14 +79,14 @@ void sgw_s5c_handle_create_session_response(gtp_xact_t *s5c_xact,
pgw_s5u_teid = rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.data;
d_assert(pgw_s5u_teid, return, "Null param");
s5u_tunnel->remote_teid = ntohl(pgw_s5u_teid->teid);
s5u_tunnel->remote_addr = pgw_s5u_teid->ipv4_addr;
s5u_tunnel->remote_addr = pgw_s5u_teid->ip.addr;
rsp->bearer_contexts_created.s5_s8_u_sgw_f_teid.presence = 0;
/* Send Control Plane(UL) : SGW-S11 */
memset(&sgw_s11_teid, 0, sizeof(gtp_f_teid_t));
sgw_s11_teid.ipv4 = 1;
sgw_s11_teid.interface_type = GTP_F_TEID_S11_S4_SGW_GTP_C;
sgw_s11_teid.ipv4_addr = sgw_ue->sgw_s11_addr;
sgw_s11_teid.ip.addr = sgw_ue->sgw_s11_addr;
sgw_s11_teid.teid = htonl(sgw_ue->sgw_s11_teid);
rsp->sender_f_teid_for_control_plane.presence = 1;
rsp->sender_f_teid_for_control_plane.data = &sgw_s11_teid;
@ -96,7 +96,7 @@ void sgw_s5c_handle_create_session_response(gtp_xact_t *s5c_xact,
memset(&sgw_s1u_teid, 0, sizeof(gtp_f_teid_t));
sgw_s1u_teid.ipv4 = 1;
sgw_s1u_teid.interface_type = s1u_tunnel->interface_type;
sgw_s1u_teid.ipv4_addr = s1u_tunnel->local_addr;
sgw_s1u_teid.ip.addr = s1u_tunnel->local_addr;
sgw_s1u_teid.teid = htonl(s1u_tunnel->local_teid);
rsp->bearer_contexts_created.s1_u_enodeb_f_teid.presence = 1;
rsp->bearer_contexts_created.s1_u_enodeb_f_teid.data = &sgw_s1u_teid;
@ -240,14 +240,14 @@ void sgw_s5c_handle_create_bearer_request(gtp_xact_t *s5c_xact,
pgw_s5u_teid = req->bearer_contexts.s5_s8_u_sgw_f_teid.data;
d_assert(pgw_s5u_teid, return, "Null param");
s5u_tunnel->remote_teid = ntohl(pgw_s5u_teid->teid);
s5u_tunnel->remote_addr = pgw_s5u_teid->ipv4_addr;
s5u_tunnel->remote_addr = pgw_s5u_teid->ip.addr;
req->bearer_contexts.s5_s8_u_sgw_f_teid.presence = 0;
/* Send Data Plane(UL) : SGW-S1U */
memset(&sgw_s1u_teid, 0, sizeof(gtp_f_teid_t));
sgw_s1u_teid.ipv4 = 1;
sgw_s1u_teid.interface_type = s1u_tunnel->interface_type;
sgw_s1u_teid.ipv4_addr = s1u_tunnel->local_addr;
sgw_s1u_teid.ip.addr = s1u_tunnel->local_addr;
sgw_s1u_teid.teid = htonl(s1u_tunnel->local_teid);
req->bearer_contexts.s1_u_enodeb_f_teid.presence = 1;
req->bearer_contexts.s1_u_enodeb_f_teid.data = &sgw_s1u_teid;

View File

@ -81,7 +81,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
s11.interface_type = GTP_F_TEID_S11_MME_GTP_C;
s11.teid = htonl(0x80000084);
core_inet_pton(AF_INET, "10.50.54.10", &sa);
s11.ipv4_addr = sa.sin.sin_addr.s_addr;
s11.ip.addr = sa.sin.sin_addr.s_addr;
req.sender_f_teid_for_control_plane.presence = 1;
req.sender_f_teid_for_control_plane.data = &s11;
req.sender_f_teid_for_control_plane.len = GTP_F_TEID_IPV4_LEN;
@ -90,7 +90,7 @@ static void gtp_message_test1(abts_case *tc, void *data)
s5.ipv4 = 1;
s5.interface_type = GTP_F_TEID_S5_S8_PGW_GTP_C;
core_inet_pton(AF_INET, "10.50.54.37", &sa);
s5.ipv4_addr = sa.sin.sin_addr.s_addr;
s5.ip.addr = sa.sin.sin_addr.s_addr;
req.pgw_s5_s8_address_for_control_plane_or_pmip.presence = 1;
req.pgw_s5_s8_address_for_control_plane_or_pmip.data = &s5;
req.pgw_s5_s8_address_for_control_plane_or_pmip.len = GTP_F_TEID_IPV4_LEN;