rt-rule.yaml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
  2. ---
  3. name: rt-rule
  4. protocol: netlink-raw
  5. uapi-header: linux/fib_rules.h
  6. protonum: 0
  7. doc: >-
  8. FIB rule management over rtnetlink.
  9. definitions:
  10. -
  11. name: rtgenmsg
  12. type: struct
  13. members:
  14. -
  15. name: family
  16. type: u8
  17. -
  18. name: pad
  19. type: pad
  20. len: 3
  21. -
  22. name: fib-rule-hdr
  23. type: struct
  24. members:
  25. -
  26. name: family
  27. type: u8
  28. -
  29. name: dst-len
  30. type: u8
  31. -
  32. name: src-len
  33. type: u8
  34. -
  35. name: tos
  36. type: u8
  37. -
  38. name: table
  39. type: u8
  40. -
  41. name: res1
  42. type: pad
  43. len: 1
  44. -
  45. name: res2
  46. type: pad
  47. len: 1
  48. -
  49. name: action
  50. type: u8
  51. enum: fr-act
  52. -
  53. name: flags
  54. type: u32
  55. -
  56. name: fr-act
  57. type: enum
  58. enum-name:
  59. entries:
  60. - unspec
  61. - to-tbl
  62. - goto
  63. - nop
  64. - res3
  65. - res4
  66. - blackhole
  67. - unreachable
  68. - prohibit
  69. -
  70. name: fib-rule-port-range
  71. type: struct
  72. members:
  73. -
  74. name: start
  75. type: u16
  76. -
  77. name: end
  78. type: u16
  79. -
  80. name: fib-rule-uid-range
  81. type: struct
  82. members:
  83. -
  84. name: start
  85. type: u32
  86. -
  87. name: end
  88. type: u32
  89. attribute-sets:
  90. -
  91. name: fib-rule-attrs
  92. name-prefix: fra-
  93. attributes:
  94. -
  95. name: dst
  96. type: binary
  97. display-hint: ipv4-or-v6
  98. -
  99. name: src
  100. type: binary
  101. display-hint: ipv4-or-v6
  102. -
  103. name: iifname
  104. type: string
  105. -
  106. name: goto
  107. type: u32
  108. -
  109. name: unused2
  110. type: pad
  111. -
  112. name: priority
  113. type: u32
  114. -
  115. name: unused3
  116. type: pad
  117. -
  118. name: unused4
  119. type: pad
  120. -
  121. name: unused5
  122. type: pad
  123. -
  124. name: fwmark
  125. type: u32
  126. display-hint: hex
  127. -
  128. name: flow
  129. type: u32
  130. -
  131. name: tun-id
  132. type: u64
  133. -
  134. name: suppress-ifgroup
  135. type: u32
  136. -
  137. name: suppress-prefixlen
  138. type: u32
  139. display-hint: hex
  140. -
  141. name: table
  142. type: u32
  143. -
  144. name: fwmask
  145. type: u32
  146. display-hint: hex
  147. -
  148. name: oifname
  149. type: string
  150. -
  151. name: pad
  152. type: pad
  153. -
  154. name: l3mdev
  155. type: u8
  156. -
  157. name: uid-range
  158. type: binary
  159. struct: fib-rule-uid-range
  160. -
  161. name: protocol
  162. type: u8
  163. -
  164. name: ip-proto
  165. type: u8
  166. -
  167. name: sport-range
  168. type: binary
  169. struct: fib-rule-port-range
  170. -
  171. name: dport-range
  172. type: binary
  173. struct: fib-rule-port-range
  174. -
  175. name: dscp
  176. type: u8
  177. -
  178. name: flowlabel
  179. type: u32
  180. byte-order: big-endian
  181. display-hint: hex
  182. -
  183. name: flowlabel-mask
  184. type: u32
  185. byte-order: big-endian
  186. display-hint: hex
  187. -
  188. name: sport-mask
  189. type: u16
  190. display-hint: hex
  191. -
  192. name: dport-mask
  193. type: u16
  194. display-hint: hex
  195. -
  196. name: dscp-mask
  197. type: u8
  198. display-hint: hex
  199. operations:
  200. enum-model: directional
  201. fixed-header: fib-rule-hdr
  202. name-prefix: rtm-
  203. list:
  204. -
  205. name: newrule
  206. doc: Add new FIB rule
  207. attribute-set: fib-rule-attrs
  208. do:
  209. request:
  210. value: 32
  211. attributes: &fib-rule-all
  212. - iifname
  213. - oifname
  214. - priority
  215. - fwmark
  216. - flow
  217. - tun-id
  218. - fwmask
  219. - table
  220. - suppress-prefixlen
  221. - suppress-ifgroup
  222. - goto
  223. - l3mdev
  224. - uid-range
  225. - protocol
  226. - ip-proto
  227. - sport-range
  228. - dport-range
  229. - dscp
  230. - flowlabel
  231. - flowlabel-mask
  232. - sport-mask
  233. - dport-mask
  234. - dscp-mask
  235. -
  236. name: newrule-ntf
  237. doc: Notify a rule creation
  238. value: 32
  239. notify: getrule
  240. -
  241. name: delrule
  242. doc: Remove an existing FIB rule
  243. attribute-set: fib-rule-attrs
  244. do:
  245. request:
  246. value: 33
  247. attributes: *fib-rule-all
  248. -
  249. name: delrule-ntf
  250. doc: Notify a rule deletion
  251. value: 33
  252. notify: getrule
  253. -
  254. name: getrule
  255. doc: Dump all FIB rules
  256. attribute-set: fib-rule-attrs
  257. dump:
  258. request:
  259. value: 34
  260. reply:
  261. value: 32
  262. attributes: *fib-rule-all
  263. mcast-groups:
  264. list:
  265. -
  266. name: rtnlgrp-ipv4-rule
  267. value: 8
  268. -
  269. name: rtnlgrp-ipv6-rule
  270. value: 19