DPDK  18.05.1
rte_table_action.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation
3  */
4 
5 #ifndef __INCLUDE_RTE_TABLE_ACTION_H__
6 #define __INCLUDE_RTE_TABLE_ACTION_H__
7 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 #include <stdint.h>
60 
61 #include <rte_compat.h>
62 #include <rte_ether.h>
63 #include <rte_meter.h>
64 #include <rte_table_hash.h>
65 
66 #include "rte_pipeline.h"
67 
72 
75 
78 
81 
84 
87 
90 
93 
96 };
97 
104 
108  uint32_t ip_offset;
109 };
110 
118 
120  uint32_t id;
121 };
122 
127 #define RTE_TABLE_ACTION_LB_KEY_SIZE_MIN 8
128 
130 #define RTE_TABLE_ACTION_LB_KEY_SIZE_MAX 64
131 
133 #define RTE_TABLE_ACTION_LB_TABLE_SIZE 8
134 
138  uint32_t key_size;
139 
143  uint32_t key_offset;
144 
147 
150 
152  uint64_t seed;
153 
157  uint32_t out_offset;
158 };
159 
169 };
170 
175 #define RTE_TABLE_ACTION_TC_MAX 4
176 
178 #define RTE_TABLE_ACTION_TC_QUEUE_MAX 4
179 
186  uint32_t tc_id;
187 
191  uint32_t tc_queue_id;
192 
197 };
198 
203 };
204 
209 
212 };
213 
218 
220  union {
223 
226  };
227 };
228 
233 
236 
239 
242 
245 };
246 
251 
254 };
255 
263 
269 
272 
275 };
276 
281 
286  uint32_t n_tc;
287 
294 
301 };
302 
309 
314  uint32_t tc_mask;
315 };
316 
321 
326  uint32_t tc_mask;
327 };
328 
336 
339 };
340 
344  uint32_t subport_id;
345 
347  uint32_t pipe_id;
348 };
349 
357 
360 
363 
366 
369 };
370 
373  struct ether_addr da;
374  struct ether_addr sa;
375 };
376 
379  uint8_t pcp;
380  uint8_t dei;
381  uint16_t vid;
382 };
383 
386  uint32_t label;
387  uint8_t tc;
388  uint8_t ttl;
389 };
390 
393  uint16_t session_id;
394 };
395 
399 };
400 
405 };
406 
412 };
413 
415 #ifndef RTE_TABLE_ACTION_MPLS_LABELS_MAX
416 #define RTE_TABLE_ACTION_MPLS_LABELS_MAX 4
417 #endif
418 
423 
426 
428  uint32_t mpls_count;
429 
431  int unicast;
432 };
433 
438 };
439 
448  uint64_t encap_mask;
449 };
450 
455 
457  union {
460 
463 
466 
469 
472  };
473 };
474 
485 
490  uint8_t proto;
491 };
492 
497 
499  union {
501  uint32_t ipv4;
502 
504  uint8_t ipv6[16];
505  } addr;
506 
508  uint16_t port;
509 };
510 
522  int drop;
523 
530 };
531 
539 };
540 
546  uint64_t n_packets;
547 };
548 
560 
567 };
568 
575  uint64_t n_packets;
576 
581  uint64_t n_bytes;
582 };
583 
587  uint64_t n_packets;
588 
590  uint64_t n_bytes;
591 
594 
597 };
598 
605  uint64_t time;
606 };
607 
611 struct rte_table_action_profile;
612 
621 struct rte_table_action_profile * __rte_experimental
623 
632 int __rte_experimental
633 rte_table_action_profile_free(struct rte_table_action_profile *profile);
634 
650 int __rte_experimental
651 rte_table_action_profile_action_register(struct rte_table_action_profile *profile,
652  enum rte_table_action_type type,
653  void *action_config);
654 
670 int __rte_experimental
671 rte_table_action_profile_freeze(struct rte_table_action_profile *profile);
672 
676 struct rte_table_action;
677 
693 struct rte_table_action * __rte_experimental
694 rte_table_action_create(struct rte_table_action_profile *profile,
695  uint32_t socket_id);
696 
705 int __rte_experimental
706 rte_table_action_free(struct rte_table_action *action);
707 
718 int __rte_experimental
719 rte_table_action_table_params_get(struct rte_table_action *action,
720  struct rte_pipeline_table_params *params);
721 
740 int __rte_experimental
741 rte_table_action_apply(struct rte_table_action *action,
742  void *data,
743  enum rte_table_action_type type,
744  void *action_params);
745 
759 int __rte_experimental
760 rte_table_action_dscp_table_update(struct rte_table_action *action,
761  uint64_t dscp_mask,
762  struct rte_table_action_dscp_table *table);
763 
778 int __rte_experimental
779 rte_table_action_meter_profile_add(struct rte_table_action *action,
780  uint32_t meter_profile_id,
781  struct rte_table_action_meter_profile *profile);
782 
794 int __rte_experimental
795 rte_table_action_meter_profile_delete(struct rte_table_action *action,
796  uint32_t meter_profile_id);
797 
825 int __rte_experimental
826 rte_table_action_meter_read(struct rte_table_action *action,
827  void *data,
828  uint32_t tc_mask,
829  struct rte_table_action_mtr_counters *stats,
830  int clear);
831 
851 int __rte_experimental
852 rte_table_action_ttl_read(struct rte_table_action *action,
853  void *data,
854  struct rte_table_action_ttl_counters *stats,
855  int clear);
856 
876 int __rte_experimental
877 rte_table_action_stats_read(struct rte_table_action *action,
878  void *data,
879  struct rte_table_action_stats_counters *stats,
880  int clear);
881 
896 int __rte_experimental
897 rte_table_action_time_read(struct rte_table_action *action,
898  void *data,
899  uint64_t *timestamp);
900 
901 #ifdef __cplusplus
902 }
903 #endif
904 
905 #endif /* __INCLUDE_RTE_TABLE_ACTION_H__ */