---
name: "ndp"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/ndp"
---

# ndp(8)

control/diagnose IPv6 neighbor discovery protocol

## NAME

**ndp** – control/diagnose IPv6 neighbor discovery protocol

## SYNOPSIS

**ndp** \[**-nt**\] *hostname*

**ndp** \[**-nt**\] **-a** \| **-c** \| **-p**

**ndp** \[**-nt**\] **-r**

**ndp** \[**-nt**\] **-H** \| **-P** \| **-R**

**ndp** \[**-nt**\] **-A** *wait*

**ndp** \[**-nt**\] **-d** *hostname*

**ndp** \[**-nt**\] **-f** *filename*

**ndp** \[**-nt**\] **-i** *interface* \[*expressions* *...*\]

**ndp** \[**-nt**\] **-I** \[*interface* \| delete\]

**ndp** \[**-nt**\] **-s** *nodename* *etheraddr* \[temp\] \[proxy\]

## DESCRIPTION

The **ndp** utility manipulates the address mapping table used by the Neighbor Discovery Protocol (NDP).

- **-a**

  Dump the currently existing NDP entries. The following information will be printed:

  - Neighbor

    IPv6 address of the neighbor.

  - Linklayer Address

    Linklayer address of the neighbor. It could be “(incomplete)” when the address is not available.

  - Netif

    Network interface associated with the neighbor cache entry.

  - Expire

    The time until expiry of the entry. The entry could become “permanent”, in which case it will never expire.

  - S

    State of the neighbor cache entry, as a single letter:

    - N

      Nostate

    - W

      Waitdelete

    - I

      Incomplete

    - R

      Reachable

    - S

      Stale

    - D

      Delay

    - P

      Probe

    - ?

      Unknown state (should never happen).

  - Flags

    Flags on the neighbor cache entry, in a single letter. They are: Router, proxy neighbor advertisement (“p”). The field could be followed by a decimal number, which means the number of NS probes the node has sent during the current state.

- **-A** *wait*

  Repeat **-a** (dump NDP entries) every *wait* seconds.

- **-c**

  Erase all the NDP entries.

- **-d**

  Delete specified NDP entry.

- **-f** *filename*

  Cause the file *filename* to be read and multiple entries to be set in the NDP table. Entries in the file should be of the form

  *hostname* *ether\_addr* \[**temp**\] \[**proxy**\]

  with argument meanings as given above. Leading whitespace and empty lines are ignored. A ‘#’ character will mark the rest of the line as a comment.

- **-H**

  Harmonize consistency between the routing table and the default router list; install the top entry of the list into the kernel routing table.

- **-I**

  Shows the default interface used as the default route when there is no default router.

- **-I** *interface*

  Specifies the default interface used as the default route when there is no default router. The *interface* will be used as the default.

- **-I** delete

  The current default interface will be deleted from the kernel.

- **-i** *interface* \[*expressions* *...*\]

  View ND information for the specified interface. If additional arguments *expressions* are given, **ndp** sets or clears the flags or variables for the interface as specified in the expression. Each expression should be separated by white spaces or tab characters. Possible expressions are as follows. Some of the expressions can begin with the special character ‘-’, which means the flag specified in the expression should be cleared. Note that you need **--** before **-foo** in this case.

  - **nud**

    Turn on or off NUD (Neighbor Unreachability Detection) on the interface. NUD is usually turned on by default.

  - **accept\_rtadv**

    Specify whether or not to accept Router Advertisement messages received on the *interface*. This flag is set by *net.inet6.ip6.accept\_rtadv* sysctl variable.

  - **auto\_linklocal**

    Specify whether or not to perform automatic link-local address configuration on *interface*. This flag is set by *net.inet6.ip6.auto\_linklocal* sysctl variable.

  - **no\_prefer\_iface**

    The address on the outgoing interface is preferred by source addess selection rule. If this flag is set, stop treating the address on the *interface* as special even when the *interface* is outgoing interface. The default value of this flag is off.

  - **disabled**

    Disable IPv6 operation on the interface. When disabled, the interface discards any IPv6 packets received on or being sent to the interface. In the sending case, an error of ENETDOWN will be returned to the application. This flag is typically set automatically in the kernel as a result of a certain failure of Duplicate Address Detection. If the auto\_linklocal per-interface flag is set, automatic link-local address configuration is performed again when this flag is cleared.

  - **basereachable**=(*number*)

    Specify the BaseReachbleTimer on the interface in millisecond.

  - **retrans**=(*number*)

    Specify the RetransTimer on the interface in millisecond.

  - **curhlim**=(*number*)

    Specify the Cur Hop Limit on the interface.

- **-n**

  Do not try to resolve numeric addresses to hostnames.

- **-p**

  Show prefix list. The following information will be printed:

  - **if**

    The network interface associated with this prefix.

  - **flags**

    The status of the prefix, expressed by a combination of the following letters:

    - **A**

      This prefix can be used for stateless address autoconfiguration.

    - **L,** **O**

      This prefix can be used for on-link determination; that is, it can be used to determine whether a given destination address is on-link.

    - **D**

      There are no reachable routers advertising this prefix.

  - **vltime**

    Valid lifetime; the length of time for which the prefix and a stateless autoconfigured address generated from this prefix can be used for the source or destination address of a packet.

  - **pltime**

    Preferred lifetime; the length of time for which the prefix and a stateless autoconfigured address generated from this prefix can be used by upper-layer protocols unrestrictedly.

  - **expire**

    This is the remaining time that the prefix is in the valid state.

  - **ref**

    The number of kernel references held for this prefix.

- **-P**

  Flush all the entries in the prefix list.

- **-r**

  Show default router list.

- **-R**

  Flush all the entries in the default router list.

- **-s**

  Register an NDP entry for a node. The entry will be permanent unless the word temp is given in the command. If the word proxy is given, this system will act as a proxy NDP server, responding to requests for *hostname* even though the host address is not its own.

- **-t**

  Print timestamp for each entry, to make it possible to merge the output with [tcpdump(1)](/tcpdump/1.md). Most useful when used with **-A**.

## EXIT STATUS

The **ndp** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[arp(8)](/arp/8.md)

## HISTORY

The **ndp** utility first appeared in the WIDE Hydrangea IPv6 protocol stack kit. The **-I** *auto\_linklocal* flag first appeared in FreeBSD 8.0.
