logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

psample.h (2634B)


  1. /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2. #ifndef __UAPI_PSAMPLE_H
  3. #define __UAPI_PSAMPLE_H
  4. enum {
  5. PSAMPLE_ATTR_IIFINDEX,
  6. PSAMPLE_ATTR_OIFINDEX,
  7. PSAMPLE_ATTR_ORIGSIZE,
  8. PSAMPLE_ATTR_SAMPLE_GROUP,
  9. PSAMPLE_ATTR_GROUP_SEQ,
  10. PSAMPLE_ATTR_SAMPLE_RATE, /* u32, ratio between observed and
  11. * sampled packets or scaled probability
  12. * if PSAMPLE_ATTR_SAMPLE_PROBABILITY
  13. * is set.
  14. */
  15. PSAMPLE_ATTR_DATA,
  16. PSAMPLE_ATTR_GROUP_REFCOUNT,
  17. PSAMPLE_ATTR_TUNNEL,
  18. PSAMPLE_ATTR_PAD,
  19. PSAMPLE_ATTR_OUT_TC, /* u16 */
  20. PSAMPLE_ATTR_OUT_TC_OCC, /* u64, bytes */
  21. PSAMPLE_ATTR_LATENCY, /* u64, nanoseconds */
  22. PSAMPLE_ATTR_TIMESTAMP, /* u64, nanoseconds */
  23. PSAMPLE_ATTR_PROTO, /* u16 */
  24. PSAMPLE_ATTR_USER_COOKIE, /* binary, user provided data */
  25. PSAMPLE_ATTR_SAMPLE_PROBABILITY,/* no argument, interpret rate in
  26. * PSAMPLE_ATTR_SAMPLE_RATE as a
  27. * probability scaled 0 - U32_MAX.
  28. */
  29. __PSAMPLE_ATTR_MAX
  30. };
  31. enum psample_command {
  32. PSAMPLE_CMD_SAMPLE,
  33. PSAMPLE_CMD_GET_GROUP,
  34. PSAMPLE_CMD_NEW_GROUP,
  35. PSAMPLE_CMD_DEL_GROUP,
  36. };
  37. enum psample_tunnel_key_attr {
  38. PSAMPLE_TUNNEL_KEY_ATTR_ID, /* be64 Tunnel ID */
  39. PSAMPLE_TUNNEL_KEY_ATTR_IPV4_SRC, /* be32 src IP address. */
  40. PSAMPLE_TUNNEL_KEY_ATTR_IPV4_DST, /* be32 dst IP address. */
  41. PSAMPLE_TUNNEL_KEY_ATTR_TOS, /* u8 Tunnel IP ToS. */
  42. PSAMPLE_TUNNEL_KEY_ATTR_TTL, /* u8 Tunnel IP TTL. */
  43. PSAMPLE_TUNNEL_KEY_ATTR_DONT_FRAGMENT, /* No argument, set DF. */
  44. PSAMPLE_TUNNEL_KEY_ATTR_CSUM, /* No argument. CSUM packet. */
  45. PSAMPLE_TUNNEL_KEY_ATTR_OAM, /* No argument. OAM frame. */
  46. PSAMPLE_TUNNEL_KEY_ATTR_GENEVE_OPTS, /* Array of Geneve options. */
  47. PSAMPLE_TUNNEL_KEY_ATTR_TP_SRC, /* be16 src Transport Port. */
  48. PSAMPLE_TUNNEL_KEY_ATTR_TP_DST, /* be16 dst Transport Port. */
  49. PSAMPLE_TUNNEL_KEY_ATTR_VXLAN_OPTS, /* Nested VXLAN opts* */
  50. PSAMPLE_TUNNEL_KEY_ATTR_IPV6_SRC, /* struct in6_addr src IPv6 address. */
  51. PSAMPLE_TUNNEL_KEY_ATTR_IPV6_DST, /* struct in6_addr dst IPv6 address. */
  52. PSAMPLE_TUNNEL_KEY_ATTR_PAD,
  53. PSAMPLE_TUNNEL_KEY_ATTR_ERSPAN_OPTS, /* struct erspan_metadata */
  54. PSAMPLE_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE, /* No argument. IPV4_INFO_BRIDGE mode.*/
  55. __PSAMPLE_TUNNEL_KEY_ATTR_MAX
  56. };
  57. /* Can be overridden at runtime by module option */
  58. #define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
  59. #define PSAMPLE_NL_MCGRP_CONFIG_NAME "config"
  60. #define PSAMPLE_NL_MCGRP_SAMPLE_NAME "packets"
  61. #define PSAMPLE_GENL_NAME "psample"
  62. #define PSAMPLE_GENL_VERSION 1
  63. #endif