.TH "IP\-ADDRESS" 8 "04 March 2012" "iproute2" "Linux"
.SH "NAME"
ip-address \- protocol address management
.SH "SYNOPSIS"
.sp
.ad l
.in +8
.ti -8
.B ip
.RI "[ " OPTIONS " ]"
.B address
.RI " { " COMMAND " | "
.BR help " }"
.sp

.ti -8
.BR "ip address" " { " add " | " change " | " replace " } "
.IB IFADDR " dev " STRING
.RI "[ " LIFETIME " ] [ " CONFFLAG-LIST " ]"

.ti -8
.BR "ip address del"
.IB IFADDR " dev " STRING

.ti -8
.BR "ip address" " { " show " | " flush " } [ " dev
.IR STRING " ] [ "
.B  scope
.IR SCOPE-ID " ] [ "
.B  to
.IR PREFIX " ] [ " FLAG-LIST " ] [ "
.B  label
.IR PATTERN " ]"

.ti -8
.IR IFADDR " := " PREFIX " | " ADDR
.B  peer
.IR PREFIX " [ "
.B  broadcast
.IR ADDR " ] [ "
.B  anycast
.IR ADDR " ] [ "
.B  label
.IR STRING " ] [ "
.B  scope
.IR SCOPE-ID " ]"

.ti -8
.IR SCOPE-ID " := "
.RB "[ " host " | " link " | " global " | "
.IR NUMBER " ]"

.ti -8
.IR FLAG-LIST " := [ "  FLAG-LIST " ] " FLAG

.ti -8
.IR FLAG " := "
.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\
tentative " | " deprecated " | " dadfailed " | " temporary " | " CONFFLAG-LIST " ]"

.ti -8
.IR CONFFLAG-LIST " := [ "  CONFFLAG-LIST " ] " CONFFLAG

.ti -8
.IR CONFFLAG " := "
.RB "[ " home " | " nodad " ]"

.ti -8
.IR LIFETIME " := [ "
.BI valid_lft " LFT"
.RB "| " preferred_lft
.IR  LFT " ]"

.ti -8
.IR LFT " := [ "
.BR forever " |"
.IR SECONDS " ]"

.SH "DESCRIPTION"
The
.B address
is a protocol (IPv4 or IPv6) address attached
to a network device.  Each device must have at least one address
to use the corresponding protocol.  It is possible to have several
different addresses attached to one device.  These addresses are not
discriminated, so that the term
.B alias
is not quite appropriate for them and we do not use it in this document.
.sp
The
.B ip address
command displays addresses and their properties, adds new addresses
and deletes old ones.

.SS ip address add - add new protocol address.

.TP
.BI dev " NAME"
the name of the device to add the address to.

.TP
.BI local " ADDRESS " (default)
the address of the interface. The format of the address depends
on the protocol. It is a dotted quad for IP and a sequence of
hexadecimal halfwords separated by colons for IPv6. The
.I ADDRESS
may be followed by a slash and a decimal number which encodes
the network prefix length.

.TP
.BI peer " ADDRESS"
the address of the remote endpoint for pointopoint interfaces.
Again, the
.I ADDRESS
may be followed by a slash and a decimal number, encoding the network
prefix length. If a peer address is specified, the local address
cannot have a prefix length. The network prefix is associated
with the peer rather than with the local address.

.TP
.BI broadcast " ADDRESS"
the broadcast address on the interface.
.sp
It is possible to use the special symbols
.B '+'
and
.B '-'
instead of the broadcast address. In this case, the broadcast address
is derived by setting/resetting the host bits of the interface prefix.

.TP
.BI label " NAME"
Each address may be tagged with a label string.
In order to preserve compatibility with Linux-2.0 net aliases,
this string must coincide with the name of the device or must be prefixed
with the device name followed by colon.

.TP
.BI scope " SCOPE_VALUE"
the scope of the area where this address is valid.
The available scopes are listed in file
.BR "/etc/iproute2/rt_scopes" .
Predefined scope values are:

.in +8
.B global
- the address is globally valid.
.sp
.B link
- the address is link local, i.e. it is valid only on this device.
.sp
.B host
- the address is valid only inside this host.
.in -8

.TP
.BI valid_lft " LFT"
(IPv6 only) the valid lifetime of this address; see section 5.5.4 of
RFC 4862. Defaults to
.BR "forever" .

.TP
.BI preferred_lft " LFT"
(IPv6 only) the preferred lifetime of this address; see section 5.5.4
of RFC 4862. Defaults to
.BR "forever" .

.TP
.B home
(IPv6 only) designates this address the "home address" as defined in
RFC 6275.

.TP
.B nodad
(IPv6 only) do not perform Duplicate Address Detection (RFC 4862) when
adding this address.

.SS ip address delete - delete protocol address
.B Arguments:
coincide with the arguments of
.B ip addr add.
The device name is a required argument. The rest are optional.
If no arguments are given, the first address is deleted.

.SS ip address show - look at protocol addresses

.TP
.BI dev " NAME " (default)
name of device.

.TP
.BI scope " SCOPE_VAL"
only list addresses with this scope.

.TP
.BI to " PREFIX"
only list addresses matching this prefix.

.TP
.BI label " PATTERN"
only list addresses with labels matching the
.IR "PATTERN" .
.I PATTERN
is a usual shell style pattern.

.TP
.BR dynamic " and " permanent
(IPv6 only) only list addresses installed due to stateless
address configuration or only list permanent (not dynamic)
addresses.

.TP
.B tentative
(IPv6 only) only list addresses which have not yet passed duplicate
address detection.

.TP
.B deprecated
(IPv6 only) only list deprecated addresses.

.TP
.B dadfailed
(IPv6 only) only list addresses which have failed duplicate
address detection.

.TP
.B temporary
(IPv6 only) only list temporary addresses.

.TP
.BR primary " and " secondary
only list primary (or secondary) addresses.

.SS ip address flush - flush protocol addresses
This command flushes the protocol addresses selected by some criteria.

.PP
This command has the same arguments as
.B show.
The difference is that it does not run when no arguments are given.

.PP
.B Warning:
This command and other
.B flush
commands are unforgiving. They will cruelly purge all the addresses.

.PP
With the
.B -statistics
option, the command becomes verbose. It prints out the number of deleted
addresses and the number of rounds made to flush the address list.
If this option is given twice,
.B ip address flush
also dumps all the deleted addresses in the format described in the
previous subsection.

.SH "EXAMPLES"
.PP
ip address show dev eth0
.RS 4
Shows the addresses assigned to network interface eth0
.RE
.PP
ip addr add 2001:0db8:85a3::0370:7334/64 dev eth1
.RS 4
Adds an IPv6 address to network interface eth1
.RE
.PP
ip addr flush dev eth4
.RS 4
Removes all addresses from device eth4
.RE

.SH SEE ALSO
.br
.BR ip (8)

.SH AUTHOR
Original Manpage by Michail Litvak <mci@owl.openwall.com>
