|
|
@ -223,8 +223,7 @@ int gw::apply_traffic_flow_template(const uint8_t&
|
|
|
|
const uint8_t& lcid,
|
|
|
|
const uint8_t& lcid,
|
|
|
|
const LIBLTE_MME_TRAFFIC_FLOW_TEMPLATE_STRUCT* tft)
|
|
|
|
const LIBLTE_MME_TRAFFIC_FLOW_TEMPLATE_STRUCT* tft)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int err = SRSLTE_SUCCESS;
|
|
|
|
std::lock_guard<std::mutex> lock(tft_mutex);
|
|
|
|
tft_mutex.lock();
|
|
|
|
|
|
|
|
switch (tft->tft_op_code) {
|
|
|
|
switch (tft->tft_op_code) {
|
|
|
|
case LIBLTE_MME_TFT_OPERATION_CODE_CREATE_NEW_TFT:
|
|
|
|
case LIBLTE_MME_TFT_OPERATION_CODE_CREATE_NEW_TFT:
|
|
|
|
for (int i = 0; i < tft->packet_filter_list_size; i++) {
|
|
|
|
for (int i = 0; i < tft->packet_filter_list_size; i++) {
|
|
|
@ -233,17 +232,15 @@ int gw::apply_traffic_flow_template(const uint8_t&
|
|
|
|
auto it = tft_filter_map.insert(std::make_pair(filter.eval_precedence, filter));
|
|
|
|
auto it = tft_filter_map.insert(std::make_pair(filter.eval_precedence, filter));
|
|
|
|
if (it.second == false) {
|
|
|
|
if (it.second == false) {
|
|
|
|
gw_log->error("Error inserting TFT Packet Filter\n");
|
|
|
|
gw_log->error("Error inserting TFT Packet Filter\n");
|
|
|
|
err = SRSLTE_ERROR_CANT_START;
|
|
|
|
return SRSLTE_ERROR_CANT_START;
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
gw_log->error("Unhandled TFT OP code\n");
|
|
|
|
gw_log->error("Unhandled TFT OP code\n");
|
|
|
|
err = SRSLTE_ERROR_CANT_START;
|
|
|
|
return SRSLTE_ERROR_CANT_START;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tft_mutex.unlock();
|
|
|
|
return SRSLTE_SUCCESS;
|
|
|
|
return err;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
/*******************************************************************************
|
|
|
@ -363,7 +360,7 @@ uint8_t gw::check_tft_filter_match(const srslte::unique_byte_buffer_t& pdu) {
|
|
|
|
bool match = filter_pair.second.match(pdu);
|
|
|
|
bool match = filter_pair.second.match(pdu);
|
|
|
|
if (match) {
|
|
|
|
if (match) {
|
|
|
|
lcid = filter_pair.second.lcid;
|
|
|
|
lcid = filter_pair.second.lcid;
|
|
|
|
gw_log->info("Found filter match -- EPS bearer Id %d, LCID %d\n", filter_pair.second.eps_bearer_id, lcid);
|
|
|
|
gw_log->debug("Found filter match -- EPS bearer Id %d, LCID %d\n", filter_pair.second.eps_bearer_id, lcid);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|