.. SPDX-License-Identifier: GPL-2.0
.. NOTE: This document was auto-generated.


=========================================
Family ``rt-neigh`` netlink specification
=========================================


.. contents:: :depth: 3


-------
Summary
-------


IP neighbour management over rtnetlink.

----------
Operations
----------


.. _rt-neigh-operation-newneigh:

newneigh
========
Add new neighbour entry

:fixed-header: :ref:`rt-neigh-definition-ndmsg`
:attribute-set: :ref:`rt-neigh-attribute-set-neighbour-attrs`
:do:
    **request**
        :attributes: [``dst``, ``lladdr``, ``probes``, ``vlan``, ``port``, ``vni``, ``ifindex``, ``master``, ``protocol``, ``nh-id``, ``flags-ext``, ``fdb-ext-attrs``]



.. _rt-neigh-operation-delneigh:

delneigh
========
Remove an existing neighbour entry

:fixed-header: :ref:`rt-neigh-definition-ndmsg`
:attribute-set: :ref:`rt-neigh-attribute-set-neighbour-attrs`
:do:
    **request**
        :attributes: [``dst``, ``ifindex``]



.. _rt-neigh-operation-delneigh-ntf:

delneigh-ntf
============
Notify a neighbour deletion

:value: 29
:notify: delneigh
:fixed-header: :ref:`rt-neigh-definition-ndmsg`


.. _rt-neigh-operation-getneigh:

getneigh
========
Get or dump neighbour entries

:fixed-header: :ref:`rt-neigh-definition-ndmsg`
:attribute-set: :ref:`rt-neigh-attribute-set-neighbour-attrs`
:do:
    **request**
        :attributes: [``dst``]

    **reply**
        :attributes: [``dst``, ``lladdr``, ``probes``, ``vlan``, ``port``, ``vni``, ``ifindex``, ``master``, ``protocol``, ``nh-id``, ``flags-ext``, ``fdb-ext-attrs``]

:dump:
    **request**
        :attributes: [``ifindex``, ``master``]

    **reply**
        :attributes: [``dst``, ``lladdr``, ``probes``, ``vlan``, ``port``, ``vni``, ``ifindex``, ``master``, ``protocol``, ``nh-id``, ``flags-ext``, ``fdb-ext-attrs``]



.. _rt-neigh-operation-newneigh-ntf:

newneigh-ntf
============
Notify a neighbour creation

:value: 28
:notify: getneigh
:fixed-header: :ref:`rt-neigh-definition-ndmsg`


.. _rt-neigh-operation-getneightbl:

getneightbl
===========
Get or dump neighbour tables

:fixed-header: :ref:`rt-neigh-definition-ndtmsg`
:attribute-set: :ref:`rt-neigh-attribute-set-ndt-attrs`
:dump:
    **request**


    **reply**
        :attributes: [``name``, ``thresh1``, ``thresh2``, ``thresh3``, ``config``, ``parms``, ``stats``, ``gc-interval``]



.. _rt-neigh-operation-setneightbl:

setneightbl
===========
Set neighbour tables

:fixed-header: :ref:`rt-neigh-definition-ndtmsg`
:attribute-set: :ref:`rt-neigh-attribute-set-ndt-attrs`
:do:
    **request**
        :attributes: [``name``, ``thresh1``, ``thresh2``, ``thresh3``, ``parms``, ``gc-interval``]




----------------
Multicast groups
----------------


- rtnlgrp-neigh

-----------
Definitions
-----------


.. _rt-neigh-definition-ndmsg:

ndmsg
=====
:type: struct


:members:
    :family (``u8``): 
    :ifindex (``s32``): 
    :state (``u16``): 
    :flags (``u8``): 
    :type (``u8``): 


.. _rt-neigh-definition-ndtmsg:

ndtmsg
======
:type: struct


:members:
    :family (``u8``): 


.. _rt-neigh-definition-nud-state:

nud-state
=========
:type: flags


:entries:
    - ``incomplete``
    - ``reachable``
    - ``stale``
    - ``delay``
    - ``probe``
    - ``failed``
    - ``noarp``
    - ``permanent``


.. _rt-neigh-definition-ntf-flags:

ntf-flags
=========
:type: flags


:entries:
    - ``use``
    - ``self``
    - ``master``
    - ``proxy``
    - ``ext-learned``
    - ``offloaded``
    - ``sticky``
    - ``router``


.. _rt-neigh-definition-ntf-ext-flags:

ntf-ext-flags
=============
:type: flags


:entries:
    - ``managed``
    - ``locked``


.. _rt-neigh-definition-rtm-type:

rtm-type
========
:type: enum


:entries:
    - ``unspec``
    - ``unicast``
    - ``local``
    - ``broadcast``
    - ``anycast``
    - ``multicast``
    - ``blackhole``
    - ``unreachable``
    - ``prohibit``
    - ``throw``
    - ``nat``
    - ``xresolve``


.. _rt-neigh-definition-nda-cacheinfo:

nda-cacheinfo
=============
:type: struct


:members:
    :confirmed (``u32``): 
    :used (``u32``): 
    :updated (``u32``): 
    :refcnt (``u32``): 


.. _rt-neigh-definition-ndt-config:

ndt-config
==========
:type: struct


:members:
    :key-len (``u16``): 
    :entry-size (``u16``): 
    :entries (``u32``): 
    :last-flush (``u32``): 
    :last-rand (``u32``): 
    :hash-rnd (``u32``): 
    :hash-mask (``u32``): 
    :hash-chain-gc (``u32``): 
    :proxy-qlen (``u32``): 


.. _rt-neigh-definition-ndt-stats:

ndt-stats
=========
:type: struct


:members:
    :allocs (``u64``): 
    :destroys (``u64``): 
    :hash-grows (``u64``): 
    :res-failed (``u64``): 
    :lookups (``u64``): 
    :hits (``u64``): 
    :rcv-probes-mcast (``u64``): 
    :rcv-probes-ucast (``u64``): 
    :periodic-gc-runs (``u64``): 
    :forced-gc-runs (``u64``): 
    :table-fulls (``u64``): 



--------------
Attribute sets
--------------


.. _rt-neigh-attribute-set-neighbour-attrs:

neighbour-attrs
===============
unspec (``binary``)
~~~~~~~~~~~~~~~~~~~
:value: 0


dst (``binary``)
~~~~~~~~~~~~~~~~
:display-hint: ipv4


lladr (``binary``)
~~~~~~~~~~~~~~~~~~
:display-hint: mac


cacheinfo (``binary``)
~~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`rt-neigh-definition-nda-cacheinfo`


probes (``u32``)
~~~~~~~~~~~~~~~~


vlan (``u16``)
~~~~~~~~~~~~~~


port (``u16``)
~~~~~~~~~~~~~~


vni (``u32``)
~~~~~~~~~~~~~


ifindex (``u32``)
~~~~~~~~~~~~~~~~~


master (``u32``)
~~~~~~~~~~~~~~~~


link-netnsid (``s32``)
~~~~~~~~~~~~~~~~~~~~~~


src-vni (``u32``)
~~~~~~~~~~~~~~~~~


protocol (``u8``)
~~~~~~~~~~~~~~~~~


nh-id (``u32``)
~~~~~~~~~~~~~~~


fdb-ext-attrs (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


flags-ext (``u32``)
~~~~~~~~~~~~~~~~~~~
:enum: :ref:`rt-neigh-definition-ntf-ext-flags`


ndm-state-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~


ndm-flags-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~


.. _rt-neigh-attribute-set-ndt-attrs:

ndt-attrs
=========
name (``string``)
~~~~~~~~~~~~~~~~~


thresh1 (``u32``)
~~~~~~~~~~~~~~~~~


thresh2 (``u32``)
~~~~~~~~~~~~~~~~~


thresh3 (``u32``)
~~~~~~~~~~~~~~~~~


config (``binary``)
~~~~~~~~~~~~~~~~~~~
:struct: :ref:`rt-neigh-definition-ndt-config`


parms (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`rt-neigh-attribute-set-ndtpa-attrs`


stats (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`rt-neigh-definition-ndt-stats`


gc-interval (``u64``)
~~~~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


.. _rt-neigh-attribute-set-ndtpa-attrs:

ndtpa-attrs
===========
ifindex (``u32``)
~~~~~~~~~~~~~~~~~


refcnt (``u32``)
~~~~~~~~~~~~~~~~


reachable-time (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~


base-reachable-time (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


retrans-time (``u64``)
~~~~~~~~~~~~~~~~~~~~~~


gc-staletime (``u64``)
~~~~~~~~~~~~~~~~~~~~~~


delay-probe-time (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


queue-len (``u32``)
~~~~~~~~~~~~~~~~~~~


app-probes (``u32``)
~~~~~~~~~~~~~~~~~~~~


ucast-probes (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


mcast-probes (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


anycast-delay (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~


proxy-delay (``u64``)
~~~~~~~~~~~~~~~~~~~~~


proxy-qlen (``u32``)
~~~~~~~~~~~~~~~~~~~~


locktime (``u64``)
~~~~~~~~~~~~~~~~~~


queue-lenbytes (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


mcast-reprobes (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


interval-probe-time-ms (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~