| /* Hey Emacs use -*- mode: C -*- */ |
| /* |
| * Copyright 2020 Rubicon Communications, LLC. |
| * |
| * 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. |
| */ |
| |
| option version = "1.0.0"; |
| |
| |
| enum node_flag : u32 |
| { |
| NODE_FLAG_FRAME_NO_FREE_AFTER_DISPATCH = 0x0001, |
| NODE_FLAG_IS_OUTPUT = 0x0002, |
| NODE_FLAG_IS_DROP = 0x0004, |
| NODE_FLAG_IS_PUNT = 0x0008, |
| NODE_FLAG_IS_HANDOFF = 0x0010, |
| NODE_FLAG_TRACE = 0x0020, |
| NODE_FLAG_SWITCH_FROM_INTERRUPT_TO_POLLING_MODE=0x0040, |
| NODE_FLAG_SWITCH_FROM_POLLING_TO_INTERRUPT_MODE=0x0080, |
| NODE_FLAG_TRACE_SUPPORTED = 0x0100, |
| }; |
| |
| |
| service { |
| rpc graph_node_get returns graph_node_get_reply |
| stream graph_node_details; |
| }; |
| |
| /** \brief graph_node_get - Get nodes of the packet processing graph |
| In order: |
| if index != ~0, dump node with given index |
| if index == ~0 and name[0] != 0, dump named node |
| if index == ~0 and name[0] == 0 and flag != 0, dump flagged nodes |
| otherwise when no selection criteria given, dump all nodes. |
| @param client_index - opaque cookie to identify the sender |
| @param context - sender context, to match reply w/ request |
| @param cursor - Starting iterator value, ~0 for initial request |
| @param index - index of a specific node, or ~0 for all |
| @param name - name of a specific node, or 0 for all |
| @param flags - NODE_FLAG_* values |
| @param flags - If true, dump details will contain next nodes out-arcs |
| */ |
| define graph_node_get |
| { |
| u32 client_index; |
| u32 context; |
| u32 cursor; |
| u32 index; |
| string name[64]; /* GRAPH_NODE_LEN */ |
| vl_api_node_flag_t flags; /* NODE_FLAG_* bits */ |
| bool want_arcs; /* Include node out-arcs? */ |
| option vat_help = "graph_node_dump [start <cursor>] [node_index <index>]|[node_name <name>]|[flags]"; |
| }; |
| |
| define graph_node_get_reply |
| { |
| u32 context; |
| i32 retval; |
| u32 cursor; |
| }; |
| |
| /** \brief Details for each graph node |
| @param index - index of the node |
| @param name - name of the node |
| @param flags - NODE_FLAG_* values |
| @param n_arcs - If requested, the number of out-arcs to other nodes |
| @param arcs - If requested, the set of out-arc next-node-indices |
| */ |
| define graph_node_details |
| { |
| u32 context; |
| u32 index; |
| string name[64]; /* GRAPH_NODE_LEN */ |
| vl_api_node_flag_t flags; |
| u32 n_arcs; |
| u32 arcs_out[n_arcs]; |
| }; |
| |
| |
| /* |
| * Local Variables: |
| * eval: (c-set-style "gnu") |
| * End: |
| */ |