xref: /linux/Documentation/netlink/specs/rt-neigh.yaml (revision a6824f65c9966cf514abc334754104b7af53567c)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2---
3name: rt-neigh
4protocol: netlink-raw
5uapi-header: linux/rtnetlink.h
6protonum: 0
7
8doc: >-
9  IP neighbour management over rtnetlink.
10
11definitions:
12  -
13    name: ndmsg
14    type: struct
15    members:
16      -
17        name: ndm-family
18        type: u8
19      -
20        name: ndm-pad
21        type: pad
22        len: 3
23      -
24        name: ndm-ifindex
25        type: s32
26      -
27        name: ndm-state
28        type: u16
29        enum: nud-state
30      -
31        name: ndm-flags
32        type: u8
33        enum: ntf-flags
34      -
35        name: ndm-type
36        type: u8
37        enum: rtm-type
38  -
39    name: ndtmsg
40    type: struct
41    members:
42      -
43        name: family
44        type: u8
45      -
46        name: pad
47        type: pad
48        len: 3
49  -
50    name: nud-state
51    type: flags
52    enum-name:
53    entries:
54      - incomplete
55      - reachable
56      - stale
57      - delay
58      - probe
59      - failed
60      - noarp
61      - permanent
62  -
63    name: ntf-flags
64    type: flags
65    enum-name:
66    entries:
67      - use
68      - self
69      - master
70      - proxy
71      - ext-learned
72      - offloaded
73      - sticky
74      - router
75  -
76    name: ntf-ext-flags
77    type: flags
78    enum-name:
79    entries:
80      - managed
81      - locked
82      - ext-validated
83  -
84    name: rtm-type
85    type: enum
86    enum-name:
87    entries:
88      - unspec
89      - unicast
90      - local
91      - broadcast
92      - anycast
93      - multicast
94      - blackhole
95      - unreachable
96      - prohibit
97      - throw
98      - nat
99      - xresolve
100  -
101    name: nda-cacheinfo
102    type: struct
103    members:
104      -
105        name: confirmed
106        type: u32
107      -
108        name: used
109        type: u32
110      -
111        name: updated
112        type: u32
113      -
114        name: refcnt
115        type: u32
116  -
117    name: ndt-config
118    type: struct
119    members:
120      -
121        name: key-len
122        type: u16
123      -
124        name: entry-size
125        type: u16
126      -
127        name: entries
128        type: u32
129      -
130        name: last-flush
131        type: u32
132      -
133        name: last-rand
134        type: u32
135      -
136        name: hash-rnd
137        type: u32
138      -
139        name: hash-mask
140        type: u32
141      -
142        name: hash-chain-gc
143        type: u32
144      -
145        name: proxy-qlen
146        type: u32
147  -
148    name: ndt-stats
149    type: struct
150    members:
151      -
152        name: allocs
153        type: u64
154      -
155        name: destroys
156        type: u64
157      -
158        name: hash-grows
159        type: u64
160      -
161        name: res-failed
162        type: u64
163      -
164        name: lookups
165        type: u64
166      -
167        name: hits
168        type: u64
169      -
170        name: rcv-probes-mcast
171        type: u64
172      -
173        name: rcv-probes-ucast
174        type: u64
175      -
176        name: periodic-gc-runs
177        type: u64
178      -
179        name: forced-gc-runs
180        type: u64
181      -
182        name: table-fulls
183        type: u64
184
185attribute-sets:
186  -
187    name: neighbour-attrs
188    name-prefix: nda-
189    attributes:
190      -
191        name: unspec
192        type: binary
193        value: 0
194      -
195        name: dst
196        type: binary
197        display-hint: ipv4
198      -
199        name: lladdr
200        type: binary
201        display-hint: mac
202      -
203        name: cacheinfo
204        type: binary
205        struct: nda-cacheinfo
206      -
207        name: probes
208        type: u32
209      -
210        name: vlan
211        type: u16
212      -
213        name: port
214        type: u16
215      -
216        name: vni
217        type: u32
218      -
219        name: ifindex
220        type: u32
221      -
222        name: master
223        type: u32
224      -
225        name: link-netnsid
226        type: s32
227      -
228        name: src-vni
229        type: u32
230      -
231        name: protocol
232        type: u8
233      -
234        name: nh-id
235        type: u32
236      -
237        name: fdb-ext-attrs
238        type: binary
239      -
240        name: flags-ext
241        type: u32
242        enum: ntf-ext-flags
243      -
244        name: ndm-state-mask
245        type: u16
246      -
247        name: ndm-flags-mask
248        type: u8
249  -
250    name: ndt-attrs
251    name-prefix: ndta-
252    attributes:
253      -
254        name: name
255        type: string
256      -
257        name: thresh1
258        type: u32
259      -
260        name: thresh2
261        type: u32
262      -
263        name: thresh3
264        type: u32
265      -
266        name: config
267        type: binary
268        struct: ndt-config
269      -
270        name: parms
271        type: nest
272        nested-attributes: ndtpa-attrs
273      -
274        name: stats
275        type: binary
276        struct: ndt-stats
277      -
278        name: gc-interval
279        type: u64
280      -
281        name: pad
282        type: pad
283  -
284    name: ndtpa-attrs
285    name-prefix: ndtpa-
286    attributes:
287      -
288        name: ifindex
289        type: u32
290      -
291        name: refcnt
292        type: u32
293      -
294        name: reachable-time
295        type: u64
296      -
297        name: base-reachable-time
298        type: u64
299      -
300        name: retrans-time
301        type: u64
302      -
303        name: gc-staletime
304        type: u64
305      -
306        name: delay-probe-time
307        type: u64
308      -
309        name: queue-len
310        type: u32
311      -
312        name: app-probes
313        type: u32
314      -
315        name: ucast-probes
316        type: u32
317      -
318        name: mcast-probes
319        type: u32
320      -
321        name: anycast-delay
322        type: u64
323      -
324        name: proxy-delay
325        type: u64
326      -
327        name: proxy-qlen
328        type: u32
329      -
330        name: locktime
331        type: u64
332      -
333        name: queue-lenbytes
334        type: u32
335      -
336        name: mcast-reprobes
337        type: u32
338      -
339        name: pad
340        type: pad
341      -
342        name: interval-probe-time-ms
343        type: u64
344
345operations:
346  enum-model: directional
347  name-prefix: rtm-
348  list:
349    -
350      name: newneigh
351      doc: Add new neighbour entry
352      fixed-header: ndmsg
353      attribute-set: neighbour-attrs
354      do:
355        request:
356          value: 28
357          attributes: &neighbour-all
358            - dst
359            - lladdr
360            - probes
361            - vlan
362            - port
363            - vni
364            - ifindex
365            - master
366            - protocol
367            - nh-id
368            - flags-ext
369            - fdb-ext-attrs
370    -
371      name: delneigh
372      doc: Remove an existing neighbour entry
373      fixed-header: ndmsg
374      attribute-set: neighbour-attrs
375      do:
376        request:
377          value: 29
378          attributes:
379            - dst
380            - ifindex
381    -
382      name: delneigh-ntf
383      doc: Notify a neighbour deletion
384      value: 29
385      notify: getneigh
386      fixed-header: ndmsg
387    -
388      name: getneigh
389      doc: Get or dump neighbour entries
390      fixed-header: ndmsg
391      attribute-set: neighbour-attrs
392      do:
393        request:
394          value: 30
395          attributes:
396            - dst
397        reply:
398          value: 28
399          attributes: *neighbour-all
400      dump:
401        request:
402          attributes:
403            - ifindex
404            - master
405        reply:
406          value: 28
407          attributes: *neighbour-all
408    -
409      name: newneigh-ntf
410      doc: Notify a neighbour creation
411      value: 28
412      notify: getneigh
413      fixed-header: ndmsg
414    -
415      name: getneightbl
416      doc: Get or dump neighbour tables
417      fixed-header: ndtmsg
418      attribute-set: ndt-attrs
419      dump:
420        request:
421          value: 66
422        reply:
423          value: 64
424          attributes:
425            - name
426            - thresh1
427            - thresh2
428            - thresh3
429            - config
430            - parms
431            - stats
432            - gc-interval
433    -
434      name: setneightbl
435      doc: Set neighbour tables
436      fixed-header: ndtmsg
437      attribute-set: ndt-attrs
438      do:
439        request:
440          value: 67
441          attributes:
442            - name
443            - thresh1
444            - thresh2
445            - thresh3
446            - parms
447            - gc-interval
448
449mcast-groups:
450  list:
451    -
452      name: rtnlgrp-neigh
453      value: 3
454