| // 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; |
| } |