/* // Copyright (c) 2017 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. */ #include #include #include "rte_ct_tcp.h" #include "rte_cnxn_tracking.h" uint8_t rte_ct_udp_new_connection(__rte_unused struct rte_ct_cnxn_tracker *ct, struct rte_ct_cnxn_data *cd, __rte_unused struct rte_mbuf *pkt) { /* printf("New connection UDP packet received\n"); */ cd->connstatus = RTE_INIT_CONN; return 1; } enum rte_ct_packet_action rte_ct_udp_packet(struct rte_ct_cnxn_tracker *ct, struct rte_ct_cnxn_data *cd, __rte_unused struct rte_mbuf *pkt, uint8_t key_was_flipped) { enum rte_ct_pkt_direction dir; enum rte_ct_udp_states ustate = RTE_CT_UDP_UNREPLIED; dir = (cd->key_is_client_order == !key_was_flipped); /* printf("packet received verify"); */ if (dir == RTE_CT_DIR_REPLY && ( (cd->connstatus == RTE_INIT_CONN) || (cd->connstatus == RTE_ASSURED_CONN))) { ustate = RTE_CT_UDP_REPLIED; cd->connstatus = RTE_ASSURED_CONN; } /* Avoid timer resetting if connection is setup */ if(cd->connstatus != RTE_INIT_CONN) cd->state_used_for_timer = ustate; rte_ct_set_cnxn_timer_for_udp(ct, cd, ustate); return RTE_CT_FORWARD_PACKET; }