#include #include #include #include #include #include #include #include uint16_t mock_pkt_input_process(struct rte_graph * graph, struct rte_node * node, void ** objs, uint16_t cnt) { unsigned int nr_source_pkts = mock_type(unsigned int); struct rte_mbuf ** source_mbufs = mock_ptr_type(struct rte_mbuf **); rte_node_enqueue(graph, node, 0, (void **)source_mbufs, nr_source_pkts); return nr_source_pkts; } uint16_t mock_pkt_output_process(struct rte_graph * graph, struct rte_node * node, void ** objs, uint16_t cnt) { struct rte_mbuf ** output_mbufs = mock_ptr_type(struct rte_mbuf **); unsigned int * nr_output_pkts = mock_ptr_type(unsigned int *); for (int i = 0; i < cnt; i++) { output_mbufs[i] = objs[i]; } *nr_output_pkts = (unsigned int)cnt; return cnt; } uint16_t mock_pkt_drop_process(struct rte_graph * graph, struct rte_node * node, void ** objs, uint16_t cnt) { struct rte_mbuf ** output_mbufs = mock_ptr_type(struct rte_mbuf **); unsigned int * nr_output_pkts = mock_ptr_type(unsigned int *); for (int i = 0; i < cnt; i++) { output_mbufs[i] = objs[i]; } *nr_output_pkts = (unsigned int)cnt; return cnt; } struct rte_node_register mock_pkt_output_node = { .process = mock_pkt_output_process, .name = "mock_pkt_output", }; struct rte_node_register mock_pkt_drop_node = { .process = mock_pkt_drop_process, .name = "mock_pkt_drop", }; struct rte_node_register mock_pkt_input_node = { .process = mock_pkt_input_process, .name = "mock_pkt_input", .nb_edges = 1, .next_nodes = { "vwire_ingress", }, .flags = RTE_NODE_SOURCE_F, }; RTE_NODE_REGISTER(mock_pkt_input_node); RTE_NODE_REGISTER(mock_pkt_output_node); RTE_NODE_REGISTER(mock_pkt_drop_node);