// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB /* Copyright (c) 2019 Mellanox Technologies. */ #define CREATE_TRACE_POINTS #include "en_tc_tracepoint.h" void put_ids_to_array(int *ids, const struct flow_action_entry *entries, unsigned int num) { unsigned int i; for (i = 0; i < num; i++) ids[i] = entries[i].id; } #define NAME_SIZE 16 static const char FLOWACT2STR[NUM_FLOW_ACTIONS][NAME_SIZE] = { [FLOW_ACTION_ACCEPT] = "ACCEPT", [FLOW_ACTION_DROP] = "DROP", [FLOW_ACTION_TRAP] = "TRAP", [FLOW_ACTION_GOTO] = "GOTO", [FLOW_ACTION_REDIRECT] = "REDIRECT", [FLOW_ACTION_MIRRED] = "MIRRED", [FLOW_ACTION_VLAN_PUSH] = "VLAN_PUSH", [FLOW_ACTION_VLAN_POP] = "VLAN_POP", [FLOW_ACTION_VLAN_MANGLE] = "VLAN_MANGLE", [FLOW_ACTION_TUNNEL_ENCAP] = "TUNNEL_ENCAP", [FLOW_ACTION_TUNNEL_DECAP] = "TUNNEL_DECAP", [FLOW_ACTION_MANGLE] = "MANGLE", [FLOW_ACTION_ADD] = "ADD", [FLOW_ACTION_CSUM] = "CSUM", [FLOW_ACTION_MARK] = "MARK", [FLOW_ACTION_WAKE] = "WAKE", [FLOW_ACTION_QUEUE] = "QUEUE", [FLOW_ACTION_SAMPLE] = "SAMPLE", [FLOW_ACTION_POLICE] = "POLICE", [FLOW_ACTION_CT] = "CT", }; const char *parse_action(struct trace_seq *p, int *ids, unsigned int num) { const char *ret = trace_seq_buffer_ptr(p); unsigned int i; for (i = 0; i < num; i++) { if (ids[i] < NUM_FLOW_ACTIONS) trace_seq_printf(p, "%s ", FLOWACT2STR[ids[i]]); else trace_seq_printf(p, "UNKNOWN "); } trace_seq_putc(p, 0); return ret; }