Update ipv4 s1U
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5216 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -568,7 +568,13 @@ static int gtpv1u_create_s1u_tunnel(gtpv1u_enb_create_tunnel_req_t *create_tunne
|
|||||||
gtpv1u_ue_data_p = calloc (1, sizeof(gtpv1u_ue_data_t));
|
gtpv1u_ue_data_p = calloc (1, sizeof(gtpv1u_ue_data_t));
|
||||||
gtpv1u_ue_data_p->ue_id = create_tunnel_req_pP->ue_index;
|
gtpv1u_ue_data_p->ue_id = create_tunnel_req_pP->ue_index;
|
||||||
gtpv1u_ue_data_p->instance_id = 0; // TO DO
|
gtpv1u_ue_data_p->instance_id = 0; // TO DO
|
||||||
#warning "TO DO TO DO gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].sgw_ip_addr"
|
memcpy(>PV1U_ENB_CREATE_TUNNEL_RESP(message_p).enb_addr.buffer,
|
||||||
|
>pv1u_data_g.enb_ip_address_for_S1u_S12_S4_up,
|
||||||
|
sizeof (in_addr_t));
|
||||||
|
GTPV1U_ENB_CREATE_TUNNEL_RESP(message_p).enb_addr.length = sizeof (in_addr_t);
|
||||||
|
AssertFatal(create_tunnel_req_pP->sgw_addr[i].length == 4, "Bad transport layer address for next operation, TO DO");
|
||||||
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].sgw_ip_addr = *((in_addr_t*)create_tunnel_req_pP->sgw_addr[i].buffer);
|
||||||
|
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].state = BEARER_IN_CONFIG;
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].state = BEARER_IN_CONFIG;
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_eNB = s1u_teid;
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_eNB = s1u_teid;
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = create_tunnel_req_pP->sgw_S1u_teid[i];
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = create_tunnel_req_pP->sgw_S1u_teid[i];
|
||||||
@@ -578,8 +584,12 @@ static int gtpv1u_create_s1u_tunnel(gtpv1u_enb_create_tunnel_req_t *create_tunne
|
|||||||
} else if (hash_rc == HASH_TABLE_OK) {
|
} else if (hash_rc == HASH_TABLE_OK) {
|
||||||
gtpv1u_ue_data_p->ue_id = create_tunnel_req_pP->ue_index;
|
gtpv1u_ue_data_p->ue_id = create_tunnel_req_pP->ue_index;
|
||||||
gtpv1u_ue_data_p->instance_id = 0; // TO DO
|
gtpv1u_ue_data_p->instance_id = 0; // TO DO
|
||||||
ipv4_addr =
|
memcpy(>PV1U_ENB_CREATE_TUNNEL_RESP(message_p).enb_addr.buffer,
|
||||||
#warning "TO DO TO DO gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].sgw_ip_addr = (uint32_t)(create_tunnel_req_pP->sgw_addr[i].buffer;"
|
>pv1u_data_g.enb_ip_address_for_S1u_S12_S4_up,
|
||||||
|
sizeof (in_addr_t));
|
||||||
|
GTPV1U_ENB_CREATE_TUNNEL_RESP(message_p).enb_addr.length = sizeof (in_addr_t);
|
||||||
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].sgw_ip_addr = *((in_addr_t*)create_tunnel_req_pP->sgw_addr[i].buffer);
|
||||||
|
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].state = BEARER_IN_CONFIG;
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].state = BEARER_IN_CONFIG;
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_eNB = s1u_teid;
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_eNB = s1u_teid;
|
||||||
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = create_tunnel_req_pP->sgw_S1u_teid[i];
|
gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = create_tunnel_req_pP->sgw_S1u_teid[i];
|
||||||
@@ -651,10 +661,10 @@ static int gtpv1u_delete_s1u_tunnel(gtpv1u_enb_delete_tunnel_req_t *req_pP)
|
|||||||
//-----------------------
|
//-----------------------
|
||||||
hash_rc = hashtable_get(gtpv1u_data_g.ue_mapping, req_pP->ue_index, (void**)>pv1u_ue_data_p);
|
hash_rc = hashtable_get(gtpv1u_data_g.ue_mapping, req_pP->ue_index, (void**)>pv1u_ue_data_p);
|
||||||
if (hash_rc == HASH_TABLE_OK) {
|
if (hash_rc == HASH_TABLE_OK) {
|
||||||
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].state = BEARER_DOWN;
|
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].state = BEARER_DOWN;
|
||||||
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_eNB = 0;
|
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_eNB = 0;
|
||||||
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = 0;
|
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = 0;
|
||||||
#warning "TO DO TO DO gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].sgw_ip_addr"
|
gtpv1u_ue_data_p->bearers[req_pP->eps_bearer_id - GTPV1U_BEARER_OFFSET].sgw_ip_addr = 0;
|
||||||
gtpv1u_ue_data_p->num_bearers -= 1;
|
gtpv1u_ue_data_p->num_bearers -= 1;
|
||||||
|
|
||||||
if (gtpv1u_ue_data_p->num_bearers == 0) {
|
if (gtpv1u_ue_data_p->num_bearers == 0) {
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ typedef struct gtpv1u_bearer_s {
|
|||||||
/* TEID used in dl and ul */
|
/* TEID used in dl and ul */
|
||||||
teid_t teid_eNB; ///< eNB TEID
|
teid_t teid_eNB; ///< eNB TEID
|
||||||
teid_t teid_sgw; ///< Remote TEID
|
teid_t teid_sgw; ///< Remote TEID
|
||||||
uint32_t sgw_ip_addr;
|
in_addr_t sgw_ip_addr;
|
||||||
tcp_udp_port_t port;
|
tcp_udp_port_t port;
|
||||||
//NwGtpv1uStackSessionHandleT stack_session;
|
//NwGtpv1uStackSessionHandleT stack_session;
|
||||||
bearer_state_t state;
|
bearer_state_t state;
|
||||||
@@ -102,7 +102,7 @@ typedef struct gtpv1u_data_s{
|
|||||||
|
|
||||||
//RB_HEAD(gtpv1u_ue_map, gtpv1u_ue_data_s) gtpv1u_ue_map_head;
|
//RB_HEAD(gtpv1u_ue_map, gtpv1u_ue_data_s) gtpv1u_ue_map_head;
|
||||||
/* Local IP address to use */
|
/* Local IP address to use */
|
||||||
uint32_t enb_ip_address_for_S1u_S12_S4_up;
|
in_addr_t enb_ip_address_for_S1u_S12_S4_up;
|
||||||
char *ip_addr;
|
char *ip_addr;
|
||||||
tcp_udp_port_t enb_port_for_S1u_S12_S4_up;
|
tcp_udp_port_t enb_port_for_S1u_S12_S4_up;
|
||||||
/* UDP internal data */
|
/* UDP internal data */
|
||||||
|
|||||||
Reference in New Issue
Block a user