git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6288 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -613,6 +613,9 @@ sgw_lite_handle_sgi_endpoint_updated(
|
|||||||
task_id_t to_task;
|
task_id_t to_task;
|
||||||
#if defined (ENABLE_USE_GTPU_IN_KERNEL)
|
#if defined (ENABLE_USE_GTPU_IN_KERNEL)
|
||||||
static uint8_t iptable_uplink_remove_gtpu = FALSE;
|
static uint8_t iptable_uplink_remove_gtpu = FALSE;
|
||||||
|
char *chain = NULL;
|
||||||
|
char cmd[256];
|
||||||
|
int ret;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ENABLE_STANDALONE_EPC)
|
#if defined(ENABLE_STANDALONE_EPC)
|
||||||
@@ -666,8 +669,6 @@ sgw_lite_handle_sgi_endpoint_updated(
|
|||||||
modify_response_p->cause = REQUEST_ACCEPTED;
|
modify_response_p->cause = REQUEST_ACCEPTED;
|
||||||
modify_response_p->trxn = new_bearer_ctxt_info_p->sgw_eps_bearer_context_information.trxn;
|
modify_response_p->trxn = new_bearer_ctxt_info_p->sgw_eps_bearer_context_information.trxn;
|
||||||
#if defined (ENABLE_USE_GTPU_IN_KERNEL)
|
#if defined (ENABLE_USE_GTPU_IN_KERNEL)
|
||||||
char cmd[256];
|
|
||||||
int ret;
|
|
||||||
ret = snprintf(cmd,
|
ret = snprintf(cmd,
|
||||||
256,
|
256,
|
||||||
"iptables -t mangle -A POSTROUTING -d %u.%u.%u.%u -m mark --mark %u -j GTPUAH --own-ip %u.%u.%u.%u --own-tun %u --peer-ip %u.%u.%u.%u --peer-tun %u --action add",
|
"iptables -t mangle -A POSTROUTING -d %u.%u.%u.%u -m mark --mark %u -j GTPUAH --own-ip %u.%u.%u.%u --own-tun %u --peer-ip %u.%u.%u.%u --peer-tun %u --action add",
|
||||||
@@ -724,72 +725,44 @@ sgw_lite_handle_sgi_endpoint_updated(
|
|||||||
}
|
}
|
||||||
//use API when prototype validated
|
//use API when prototype validated
|
||||||
ret = spgw_system(cmd, SPGW_ABORT_ON_ERROR, __FILE__, __LINE__);
|
ret = spgw_system(cmd, SPGW_ABORT_ON_ERROR, __FILE__, __LINE__);
|
||||||
if (ret < 0) {
|
|
||||||
SPGW_APP_ERROR("ERROR in setting up downlink TUNNEL\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iptable_uplink_remove_gtpu == FALSE) {
|
if (iptable_uplink_remove_gtpu == FALSE) {
|
||||||
ret = snprintf(cmd,
|
if (strncasecmp("tun",spgw_config.sgw_config.ipv4.sgw_interface_name_for_S1u_S12_S4_up, strlen("tun")) == 0) {
|
||||||
256,
|
chain = "OUTPUT";
|
||||||
"iptables -t raw -A OUTPUT -s %u.%u.%u.%u -d %u.%u.%u.%u -p udp --dport 2152 -j GTPURH --own-ip %u.%u.%u.%u --own-tun %u --peer-ip %u.%u.%u.%u --peer-tun %u --action remove",
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[0],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[1],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[2],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[3],
|
|
||||||
sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x000000FF,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x0000FF00) >> 8,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x00FF0000) >> 16,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0xFF000000) >> 24,
|
|
||||||
sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x000000FF,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x0000FF00) >> 8,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x00FF0000) >> 16,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0xFF000000) >> 24,
|
|
||||||
eps_bearer_entry_p->s_gw_teid_for_S1u_S12_S4_up,
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[0],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[1],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[2],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[3],
|
|
||||||
eps_bearer_entry_p->enb_teid_for_S1u);
|
|
||||||
|
|
||||||
if ((ret < 0) || (ret > 256)) {
|
|
||||||
SPGW_APP_ERROR("ERROR in preparing uplink tunnel, tune string length\n");
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
ret = spgw_system(cmd, SPGW_ABORT_ON_ERROR, __FILE__, __LINE__);
|
|
||||||
|
|
||||||
ret = snprintf(cmd,
|
|
||||||
256,
|
|
||||||
"iptables -t raw -A PREROUTING -i %s -s %u.%u.%u.%u -d %u.%u.%u.%u -p udp --dport 2152 -j GTPURH --action remove --own-ip %u.%u.%u.%u --own-tun %u --peer-ip %u.%u.%u.%u --peer-tun %u ",
|
|
||||||
sgw_app.sgw_interface_name_for_S1u_S12_S4_up,
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[0],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[1],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[2],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[3],
|
|
||||||
sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x000000FF,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x0000FF00) >> 8,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x00FF0000) >> 16,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0xFF000000) >> 24,
|
|
||||||
sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x000000FF,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x0000FF00) >> 8,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x00FF0000) >> 16,
|
|
||||||
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0xFF000000) >> 24,
|
|
||||||
eps_bearer_entry_p->s_gw_teid_for_S1u_S12_S4_up,
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[0],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[1],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[2],
|
|
||||||
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[3],
|
|
||||||
eps_bearer_entry_p->enb_teid_for_S1u);
|
|
||||||
if ((ret < 0) || (ret > 256)) {
|
|
||||||
SPGW_APP_ERROR("ERROR in preparing uplink tunnel, tune string length\n");
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
ret = spgw_system(cmd, SPGW_ABORT_ON_ERROR, __FILE__, __LINE__);
|
|
||||||
if (ret < 0) {
|
|
||||||
SPGW_APP_ERROR("ERROR in setting up uplink TUNNEL\n");
|
|
||||||
} else {
|
} else {
|
||||||
iptable_uplink_remove_gtpu = TRUE;
|
chain = "PREROUTING";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = snprintf(cmd,
|
||||||
|
256,
|
||||||
|
"iptables -t raw -A %s -s %u.%u.%u.%u -d %u.%u.%u.%u -p udp --dport 2152 -j GTPURH --own-ip %u.%u.%u.%u --own-tun %u --peer-ip %u.%u.%u.%u --peer-tun %u --action remove",
|
||||||
|
chain,
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[0],
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[1],
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[2],
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[3],
|
||||||
|
sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x000000FF,
|
||||||
|
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x0000FF00) >> 8,
|
||||||
|
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x00FF0000) >> 16,
|
||||||
|
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0xFF000000) >> 24,
|
||||||
|
sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x000000FF,
|
||||||
|
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x0000FF00) >> 8,
|
||||||
|
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0x00FF0000) >> 16,
|
||||||
|
(sgw_app.sgw_ip_address_for_S1u_S12_S4_up & 0xFF000000) >> 24,
|
||||||
|
eps_bearer_entry_p->s_gw_teid_for_S1u_S12_S4_up,
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[0],
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[1],
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[2],
|
||||||
|
eps_bearer_entry_p->enb_ip_address_for_S1u.address.ipv4_address[3],
|
||||||
|
eps_bearer_entry_p->enb_teid_for_S1u);
|
||||||
|
|
||||||
|
if ((ret < 0) || (ret > 256)) {
|
||||||
|
SPGW_APP_ERROR("ERROR in preparing uplink tunnel, tune string length\n");
|
||||||
|
exit (-1);
|
||||||
|
}
|
||||||
|
ret = spgw_system(cmd, SPGW_ABORT_ON_ERROR, __FILE__, __LINE__);
|
||||||
|
iptable_uplink_remove_gtpu = TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user