aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/sflow/sflow.api
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sflow/sflow.api')
-rw-r--r--src/plugins/sflow/sflow.api198
1 files changed, 198 insertions, 0 deletions
diff --git a/src/plugins/sflow/sflow.api b/src/plugins/sflow/sflow.api
new file mode 100644
index 00000000000..e5f33001e6e
--- /dev/null
+++ b/src/plugins/sflow/sflow.api
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2024 InMon Corp.
+ * 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.
+ */
+
+/**
+ * @file sflow.api
+ * @brief VPP control-plane API messages.
+ *
+ * This file defines VPP control-plane binary API messages which are generally
+ * called through a shared memory interface.
+ */
+
+/* Version and type recitations */
+
+option version = "0.1.0";
+import "vnet/interface_types.api";
+
+
+/** @brief API to enable / disable sflow
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param enable_disable - 1 to enable, 0 to disable the feature
+ @param hw_if_index - hardware interface handle
+*/
+
+autoreply define sflow_enable_disable {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+
+ /* Enable / disable the feature */
+ bool enable_disable;
+
+ /* Interface handle */
+ vl_api_interface_index_t hw_if_index;
+};
+
+/** @brief API to get sflow sampling-rate
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+*/
+
+define sflow_sampling_rate_get {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+};
+
+/** \brief API go the sflow sampling-rate
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param sampling_N - the current 1-in-N sampling rate
+*/
+
+define sflow_sampling_rate_get_reply
+{
+ u32 context;
+ u32 sampling_N;
+ option in_progress;
+};
+
+/** @brief API to set sflow sampling-rate
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param sampling_N - 1-in-N random sampling rate
+*/
+
+autoreply define sflow_sampling_rate_set {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+
+ /* Sampling_N */
+ u32 sampling_N [default=10000];
+};
+
+/** @brief API to set sflow polling-interval
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param polling_S - polling interval in seconds
+*/
+
+autoreply define sflow_polling_interval_set {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+
+ /* Polling_S */
+ u32 polling_S [default=20];
+};
+
+/** @brief API to get sflow polling-interval
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+*/
+
+define sflow_polling_interval_get {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+};
+
+/** \brief API go the sflow polling-interval
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param polling_S - current polling interval in seconds
+*/
+
+define sflow_polling_interval_get_reply
+{
+ u32 context;
+ u32 polling_S;
+ option in_progress;
+};
+
+/** @brief API to set sflow header-bytes
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param header_B - max header length in bytes
+*/
+
+autoreply define sflow_header_bytes_set {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+
+ /* header_B */
+ u32 header_B [default=128];
+};
+
+/** @brief API to get sflow header-bytes
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+*/
+
+define sflow_header_bytes_get {
+ /* Client identifier, set from api_main.my_client_index */
+ u32 client_index;
+
+ /* Arbitrary context, so client can match reply to request */
+ u32 context;
+};
+
+/** \brief API go the sflow header-bytes
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param header_B - current maximum header length in bytes
+*/
+
+define sflow_header_bytes_get_reply
+{
+ u32 context;
+ u32 header_B;
+ option in_progress;
+};
+
+/** \brief Dump sflow enabled interface(s)
+ @param client_index - opaque cookie to identify the sender
+ @param hw_if_index - hw_if_index of a specific interface, or -1 (default)
+ to return all sflow enabled interfaces
+*/
+define sflow_interface_dump
+{
+ u32 client_index;
+ u32 context;
+ vl_api_interface_index_t hw_if_index [default=0xffffffff];
+};
+
+/** \brief sflow enabled interface details
+*/
+define sflow_interface_details
+{
+ u32 context;
+ vl_api_interface_index_t hw_if_index;
+};