/tools/testing/selftests/bpf/progs/bpf_iter.h

https://gitlab.com/jimdigriz/linux · C Header · 153 lines · 132 code · 18 blank · 3 comment · 0 complexity · aa07bf556fd6083a4e628dabcf9c88c9 MD5 · raw file

  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (c) 2020 Facebook */
  3. /* "undefine" structs in vmlinux.h, because we "override" them below */
  4. #define bpf_iter_meta bpf_iter_meta___not_used
  5. #define bpf_iter__bpf_map bpf_iter__bpf_map___not_used
  6. #define bpf_iter__ipv6_route bpf_iter__ipv6_route___not_used
  7. #define bpf_iter__netlink bpf_iter__netlink___not_used
  8. #define bpf_iter__task bpf_iter__task___not_used
  9. #define bpf_iter__task_file bpf_iter__task_file___not_used
  10. #define bpf_iter__task_vma bpf_iter__task_vma___not_used
  11. #define bpf_iter__tcp bpf_iter__tcp___not_used
  12. #define tcp6_sock tcp6_sock___not_used
  13. #define bpf_iter__udp bpf_iter__udp___not_used
  14. #define udp6_sock udp6_sock___not_used
  15. #define bpf_iter__unix bpf_iter__unix___not_used
  16. #define bpf_iter__bpf_map_elem bpf_iter__bpf_map_elem___not_used
  17. #define bpf_iter__bpf_sk_storage_map bpf_iter__bpf_sk_storage_map___not_used
  18. #define bpf_iter__sockmap bpf_iter__sockmap___not_used
  19. #define bpf_iter__bpf_link bpf_iter__bpf_link___not_used
  20. #define btf_ptr btf_ptr___not_used
  21. #define BTF_F_COMPACT BTF_F_COMPACT___not_used
  22. #define BTF_F_NONAME BTF_F_NONAME___not_used
  23. #define BTF_F_PTR_RAW BTF_F_PTR_RAW___not_used
  24. #define BTF_F_ZERO BTF_F_ZERO___not_used
  25. #include "vmlinux.h"
  26. #undef bpf_iter_meta
  27. #undef bpf_iter__bpf_map
  28. #undef bpf_iter__ipv6_route
  29. #undef bpf_iter__netlink
  30. #undef bpf_iter__task
  31. #undef bpf_iter__task_file
  32. #undef bpf_iter__task_vma
  33. #undef bpf_iter__tcp
  34. #undef tcp6_sock
  35. #undef bpf_iter__udp
  36. #undef udp6_sock
  37. #undef bpf_iter__unix
  38. #undef bpf_iter__bpf_map_elem
  39. #undef bpf_iter__bpf_sk_storage_map
  40. #undef bpf_iter__sockmap
  41. #undef bpf_iter__bpf_link
  42. #undef btf_ptr
  43. #undef BTF_F_COMPACT
  44. #undef BTF_F_NONAME
  45. #undef BTF_F_PTR_RAW
  46. #undef BTF_F_ZERO
  47. struct bpf_iter_meta {
  48. struct seq_file *seq;
  49. __u64 session_id;
  50. __u64 seq_num;
  51. } __attribute__((preserve_access_index));
  52. struct bpf_iter__ipv6_route {
  53. struct bpf_iter_meta *meta;
  54. struct fib6_info *rt;
  55. } __attribute__((preserve_access_index));
  56. struct bpf_iter__netlink {
  57. struct bpf_iter_meta *meta;
  58. struct netlink_sock *sk;
  59. } __attribute__((preserve_access_index));
  60. struct bpf_iter__task {
  61. struct bpf_iter_meta *meta;
  62. struct task_struct *task;
  63. } __attribute__((preserve_access_index));
  64. struct bpf_iter__task_file {
  65. struct bpf_iter_meta *meta;
  66. struct task_struct *task;
  67. __u32 fd;
  68. struct file *file;
  69. } __attribute__((preserve_access_index));
  70. struct bpf_iter__task_vma {
  71. struct bpf_iter_meta *meta;
  72. struct task_struct *task;
  73. struct vm_area_struct *vma;
  74. } __attribute__((preserve_access_index));
  75. struct bpf_iter__bpf_map {
  76. struct bpf_iter_meta *meta;
  77. struct bpf_map *map;
  78. } __attribute__((preserve_access_index));
  79. struct bpf_iter__tcp {
  80. struct bpf_iter_meta *meta;
  81. struct sock_common *sk_common;
  82. uid_t uid;
  83. } __attribute__((preserve_access_index));
  84. struct tcp6_sock {
  85. struct tcp_sock tcp;
  86. struct ipv6_pinfo inet6;
  87. } __attribute__((preserve_access_index));
  88. struct bpf_iter__udp {
  89. struct bpf_iter_meta *meta;
  90. struct udp_sock *udp_sk;
  91. uid_t uid __attribute__((aligned(8)));
  92. int bucket __attribute__((aligned(8)));
  93. } __attribute__((preserve_access_index));
  94. struct udp6_sock {
  95. struct udp_sock udp;
  96. struct ipv6_pinfo inet6;
  97. } __attribute__((preserve_access_index));
  98. struct bpf_iter__unix {
  99. struct bpf_iter_meta *meta;
  100. struct unix_sock *unix_sk;
  101. uid_t uid;
  102. } __attribute__((preserve_access_index));
  103. struct bpf_iter__bpf_map_elem {
  104. struct bpf_iter_meta *meta;
  105. struct bpf_map *map;
  106. void *key;
  107. void *value;
  108. };
  109. struct bpf_iter__bpf_sk_storage_map {
  110. struct bpf_iter_meta *meta;
  111. struct bpf_map *map;
  112. struct sock *sk;
  113. void *value;
  114. };
  115. struct bpf_iter__sockmap {
  116. struct bpf_iter_meta *meta;
  117. struct bpf_map *map;
  118. void *key;
  119. struct sock *sk;
  120. };
  121. struct bpf_iter__bpf_link {
  122. struct bpf_iter_meta *meta;
  123. struct bpf_link *link;
  124. };
  125. struct btf_ptr {
  126. void *ptr;
  127. __u32 type_id;
  128. __u32 flags;
  129. };
  130. enum {
  131. BTF_F_COMPACT = (1ULL << 0),
  132. BTF_F_NONAME = (1ULL << 1),
  133. BTF_F_PTR_RAW = (1ULL << 2),
  134. BTF_F_ZERO = (1ULL << 3),
  135. };